【问题标题】:Selenium Webdriver & findelementSelenium Webdriver & findelement
【发布时间】:2014-01-08 10:12:33
【问题描述】:

我要找一个元素,xpath是这样的

"//div[@id='contentPane']/div/div[2]/div/div[2]/div[2]/div/div/div[2]/div/div/div/div/div/div/div[3]/div/div" 然后执行“clickAt”

如果我使用

driver.findElement(By.xpath("//div[@id='contentPane']/div/div[2]/div/div[2]/div[2]/div/div/div[2]/div/div/div/div/div/div/div[3]/div/div"); Actions clicker = new Actions(driver); clicker.moveToElement(baseElement).moveByOffset(0, 0).click().perform();

我收到异常“Element not found”。 我做错了什么?

【问题讨论】:

  • xpath 似乎不正确。如果你添加html,它会帮助别人帮助你
  • Xpath 似乎非常错误。您可以删除所有内容并仅使用 id。应该工作。
  • 在 IDE 中像这样“clickAt //div[@id='contentPane']/div/div[2]/div/div[2]/div[2]/div/div/ div[2]/div/div/div/div/div/div/div[3]/div/div"
  • 我不能只使用id,因为每次刷新页面后它都会改变
  • 帮助我们处理 html。这对我们来说很容易。

标签: java html selenium


【解决方案1】:

使用这么长的 xpath 会导致测试用例失败,可以动态添加或删除新的 div。id 的某些部分应该保持不变。

例如在id = "someString_1234"中,如果'someString'保持不变而rest不断变化,你可以使用id*='someString'之类的符号来定位它。

You can refer this discussion for more info.

【讨论】:

    【解决方案2】:

    代替

    driver.findElement(By.xpath("//div[@id='contentPane']/div/div[2]/div/div[2]/div[2]/div/div/div[2]/div/div/div/div/div/div/div[3]/div/div");
    

    试试这个代码:

    driver.findElement(By.id("contentPane");
    

    【讨论】:

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