【问题标题】:can't find element by xpath using selenium使用 selenium 无法通过 xpath 找到元素
【发布时间】:2016-08-23 12:49:46
【问题描述】:

我尝试了这个 xpath 但我不知道如何继续? 我在弹出菜单中有 2 个对象,我想选择第一个

页面的html是:

</div>
<input class="sprite form-enter" type="submit" value="" name="wobi">
</div>
<div class="container">
<img src="/_media/home/img/icons/pension.png">
<div class="login-text-container">
<a class="sprite form-enter" href="https://pension.wobi.co.il/login" value="" name="pension" type="submit"></a>
</div>
</div>

java代码是:

driver.findElement(By.xpath("//input[@class='sprite form-enter' and input//@name='wobi']")).click();
Thread.sleep(2000);

执行代码后出现以下异常:

线程 "main" org.openqa.selenium.NoSuchElementException 中的异常:没有这样的元素:无法找到元素:{"method":"xpath","selector":"//input[@class='sprite form -enter' 并输入/@name='wobi']"}

我的代码有什么问题?

【问题讨论】:

  • 你的意思是你有两个元素具有相同的类sprite form-enter和名称wobi??
  • 您的 XPath 错误最好尝试检查它是否适用于 Firebug / Firepath

标签: java selenium xpath selenium-webdriver


【解决方案1】:

实际上你尝试使用错误的xpath,正确的xpath 应该是:-

//input[@class='sprite form-enter' and @name='wobi']

但我建议你,在这里尝试使用By.cssSelector(),因为它会比xpath 快得多,如下所示:-

driver.findElement(By.cssSelector("input.sprite.form-enter[name = 'wobi']")).click();

【讨论】:

    【解决方案2】:

    试试这个选择器:

    //input[@class='sprite form-enter'][@name='wobi']
    

    【讨论】:

      【解决方案3】:

      好像你有一个复合类,试试CSSSelector

      driver.findElement(By.cssSelector(".sprite.form-enter")).click();
      

      【讨论】:

        猜你喜欢
        • 2022-08-16
        • 1970-01-01
        • 1970-01-01
        • 2022-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-12
        • 2011-11-24
        相关资源
        最近更新 更多