selenium - 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']"
,两个实例都可以正常工作。
你能告诉我这里发生了什么吗?
解决方案
我认为没有必要从第二次点击中删除
btnWorkItemClose = bla.elementByXpath("//button[@class = 'ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close']");
我只在它工作正常后才尝试定位
推荐阅读
- python - 如何解决 - ModuleNotFoundError: No module named 'gekko', in spyder?
- docker - Yocto 图像构建失败
- python - 由于在 ImageDataGenerator 中调整图像大小,是否会丢失任何特征?
- c++ - 使用信号侦听器线程 - 我该如何停止它?
- java - 尝试将 JAR 转换为 EXE
- scala - 如何迭代包含特定值的枚举值?
- python-xarray - 在 xarray 中索引超过 4 个维度
- c++ - 虚函数调用顺序
- javascript - 如何使用 Mongoose 查询唯一用户
- javascript - web3.eth.contracts.method 等待函数永远不会返回