【问题标题】:Selenium WebDriver findElement(By.xpath()) not working for meSelenium WebDriver findElement(By.xpath()) 不适合我
【发布时间】:2013-06-06 01:55:08
【问题描述】:

我已经阅读了 xpath 教程并查看了许多其他帖子,因此我不确定我缺少什么。我只是想通过 xpath 找到以下元素:

<input class="t-TextBox" type="email" test-id="test-username"/>

我尝试了很多东西,例如:

element = findElement(By.xpath("//[@test-id='test-username']"));

错误是Expression is not a legal expression

我在 MacBook 上使用 Firefox

任何建议将不胜感激。

【问题讨论】:

标签: xpath selenium webdriver


【解决方案1】:
element = findElement(By.xpath("//*[@test-id='test-username']"));
element = findElement(By.xpath("//input[@test-id='test-username']"));

(*) - 表示任何标签名称。

【讨论】:

    【解决方案2】:

    您应该在 xpath 中添加标签名称,例如:

    element = findElement(By.xpath("//input[@test-id='test-username']");
    

    【讨论】:

      【解决方案3】:

      您的语法完全错误....您需要将 findelement 提供给驱动程序

      即您的代码将是:

      WebDriver driver = new FirefoxDriver();
      WebeElement element ;
      
      element = driver.findElement(By.xpath("//[@test-id='test-username']"); 
      

      // 你的 xpath 是:"//[@test-id='test-username']"

      我建议试试这个:"//*[@test-id='test-username']"

      【讨论】:

        【解决方案4】:

        你错过了最后的右括号:

        element = findElement(By.xpath("//[@test-id='test-username']"));
        

        【讨论】:

          【解决方案5】:

          只需要在xpath的开头加上*,最后加上右括​​号。

          element = findElement(By.xpath("//*[@test-id='test-username']"));
          

          【讨论】:

            【解决方案6】:

            您尚未指定您尝试在哪种 html 元素上进行绝对 xpath 搜索。在您的情况下,它是输入元素。

            试试这个:

            element = findElement(By.xpath("//input[@class='t-TextBox' and @type='email' and @test-    
            id='test-username']");
            

            【讨论】:

              【解决方案7】:

              正确的Xpath 语法如下:

              //tagname[@value='name']
              

              所以你应该这样写:

              findElement(By.xpath("//input[@test-id='test-username']"));
              

              【讨论】:

                【解决方案8】:

                你也可以使用 contains:

                element = findElement(By.xpath("//input[contains (@test-id,"test-username")]");
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2023-03-11
                  • 2023-03-22
                  相关资源
                  最近更新 更多