首页 > 解决方案 > Selenium 使用 Java:使用类属性搜索按钮失败;而使用title属性是成功的

问题描述

我在网页中有一个按钮元素

<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close" role="button" title="Close">
    <span class="ui-button-icon-primary ui-icon ui-icon-closethick"></span> 
    <span class="ui-button-text">Close</span>
</button>

我正在尝试使用此 Xpath 找到它:"//button[@class = 'ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close']"

此按钮元素仅在我选择查看页面内的项目时出现。页面内有多个项目;所以我需要在关闭已经打开的一个后一个一个打开。

我需要多次使用 Xpath 来执行我的操作

btnWorkItemClose = bla.elementByXpath("//button[@class = 'ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close']");
btnWorkItemClose.click();
backlogGrid.sendKeys(Keys.ARROW_DOWN);  
backlogGrid.sendKeys(Keys.ENTER);
doSomeFuntionWithTheWorkItem();
btnWorkItemClose = bla.elementByXpath("//button[@class = 'ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close']");
btnWorkItemClose.click();

该元素在第一次使用时成功定位,但在第二次使用中未成功定位。我得到了例外

"没有这样的元素:无法定位元素:{"method":"xpath","selector":"//button[@class = 'ui-button ui-widget ui-state-default ui-corner-all ui-仅按钮图标 ui-dialog-titlebar-close']"}" ]

注意:当我在网页中手动使用 Xpath 时,它准确地找到了元素并且我尝试了不同的等待方法,但也没有帮助。

但是,当我使用 Xpath 时"//button[@title= 'Close']",两个实例都可以正常工作。

你能告诉我这里发生了什么吗?

标签: selenium

解决方案


我认为没有必要从第二次点击中删除

btnWorkItemClose = bla.elementByXpath("//button[@class = 'ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close']");

我只在它工作正常后才尝试定位


推荐阅读