Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 找不到包含用于Selenium测试的特定文本的按钮包装元素_Java_Css_Selenium Webdriver - Fatal编程技术网

Java 找不到包含用于Selenium测试的特定文本的按钮包装元素

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(

给定以下Html:

<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]