线程主线程中的异常:无法使用x路径表达式定位元素

时间:2018-12-12 11:22:13

标签: java selenium selenium-webdriver xpath selenium-chromedriver

我正在使用带有Java的Selenium Webdriver来自动执行页面。我面临的问题是我的测试无法识别页面上的任何元素。

例如,我尝试单击名为LogIn的按钮,并且尝试使用xpathidcss选择器,但是这些选项都不适合我。

这是html代码:

<button type="button" id="ext-gen72" class=" x-btn-text tdgi_icon_key">LogIn</button>

这是我的代码:

public class Test {

    public static void main(String[] args) throws InterruptedException {

        System.setProperty("webdriver.chrome.driver","C:\\Users\\mkrolo\\Documents\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("page");
        driver.manage().window().maximize();
        Thread.sleep(13000);
        System.out.println(driver.getTitle());
        driver.findElement(By.xpath("button[contains(text(), 'LogIn']"));
        //driver.findElement(By.xpath("//@button[text()='LogIn']")).click();
   }    
}

其他注释:这只是我尝试单击该按钮的一个示例,也是Thread.sleep()的一个示例,因为它需要很长时间才能加载页面。

感谢您能提供的所有帮助。

3 个答案:

答案 0 :(得分:1)

您使用的是无效的xpath。试试

By.xpath("//button[contains(., 'LogIn']")

答案 1 :(得分:1)

您使用的xpath均无效。这是例外的原因。因此,您必须尝试使用​​有效的xpath或其他定位器-

xpath

  • tool.create( -如果部分文本匹配,它将找到按钮
  • //button[contains(text(), 'LogIn']-如果全文匹配,如果在文本之前或之后有空格,则它将定位按钮。
  • //button[text()='LogIn']

css

  • //button[@type='button'][@class='x-btn-text tdgi_icon_key']例如.x-btn-text.tdgi_icon_key

  • driver.findElement(By.cssSelector(".x-btn-text.tdgi_icon_key"));

您必须探索一些教程才能更好地自定义xpath和CSS创建。

此外,请避免在脚本中使用硬编码的等待,而应使用硒的隐式和显式等待概念。

答案 2 :(得分:0)

为帮助您使用xPath并避免此类错误,您可以使用Chrome检查并复制xPath,然后在硒选择器中输入相同的值。

enter image description here