Java 找不到包含用于Selenium测试的特定文本的按钮包装元素
给定以下Html:Java 找不到包含用于Selenium测试的特定文本的按钮包装元素,java,css,selenium-webdriver,Java,Css,Selenium Webdriver,给定以下Html: <button type="button"><b><em><u>Next</u></em></b></button> 下一步 在页面源代码中,我有多个按钮。我只能用文本查找下一个元素。我尝试了以下方法,但没有成功: driver.findelelement(通过.cssSelector(“按钮>b>em>u[text()='Next']) driver.findElement(
<button type="button"><b><em><u>Next</u></em></b></button>
下一步
在页面源代码中,我有多个按钮。我只能用文本查找下一个元素。我尝试了以下方法,但没有成功:
driver.findelelement(通过.cssSelector(“按钮>b>em>u[text()='Next'])
driver.findElement(通过.cssSelector(“按钮>b>em>u[.='Next']))
driver.findElement(通过.cssSelector(“按钮>b>em>u.contains('Next'))
尝试为按钮分配ID,然后将功能映射到按钮ID,而不是按钮文本,如下所示:
您正在css选择器中组合xpath选择器语法。请尝试以下方法:
driver.findElement(By.xpath(“//button/b/em/u[text()='Next'])
或
driver.findElement(By.xpath(//u[text()='Next'])
如果您确实希望使用css选择器,请删除text()
部分,如下所示:
driver.findelelement(By.cssSelector(“button>b>em>u”)
如果按钮有空格或其他字符,我会切换到xpath
选择器
选择u
元素
此xpath将选择u
元素:
driver.findElement(By.xpath("//button/b/em/u[contains(., 'Next')]"))
选择按钮
要选择包含上述u
元素的按钮
,例如,以便可以单击该按钮:
driver.findElement(By.xpath("//button[b/em/u[contains(., 'Next')]]"))
未找到元素?
另一方面,一般来说,在查看HTML以确定
css
或xpath
的Se
选择器时,请确保查看的是最终呈现的HTML版本,不仅是从web服务器端提供的原始Html,客户端javascript
可能在加载后对Html进行了显著修改,还需要注意的是,如果提供的Html格式不正确,也可能会出现这种情况。在Chrome中,我使用开发人员工具
:元素
窗格查看html。下面xpath应该找到第一个出现的“下一步”按钮:
如果要获得第二个匹配项:
//button[text()='Next'][2]
@反斜杠哈哈,我想我应该先试试。回复!斯图尔特,我犯了个错误。xpath表达式“//button[b/em/u[contains(,'Next')]]”无法计算,或者不会生成WebElement据猜测可能有多个按钮上有单词
Next
(可能隐藏?)<代码>driver.findElement(By.xpath((//按钮[b/em/u[contains(,'Next')]))[1])应该只找到第一个。@virendrachaudhary很高兴你发现了这个问题-愿意分享吗?可能对未来的用户有帮助:)非常感谢Stuart,下面的解决方案对我很有用。在页面源代码中,driver.findElement(By.xpath(“//button/b/em/u[contains(,'Next')]”)有多个元素具有相同的id,比如cancel button和Next button具有相同的id。
//button[text()='Next'][2]