【问题标题】:Find element by xpath in selenium在 selenium 中通过 xpath 查找元素
【发布时间】:2015-09-15 10:46:04
【问题描述】:

当执行带有以下行的测试用例时,我得到以下错误 -

NoSuchElementException:消息:无法定位元素: {"method":"xpath","selector":"//div[@id='sizzle-1442313418270']/div/table/tbody/tr/td[3]"}

    driver.find_element_by_xpath("//div[@id='sizzle-1442313418270']/div/table/tbody/tr/td[3]").click()
    driver.find_element_by_xpath("//div[@id='sizzle-1442313418270']/div/table/tbody/tr[2]/td[4]").click()

【问题讨论】:

  • 在这个错误中你有什么不清楚的地方?
  • 日期选择字段显示此错误。
  • 我想显示我选择的日期字段,但这里测试用例在到达日期字段时停止并显示无法定位元素
  • 您的字段是否已经可见?
  • 是的,我的日期字段是可见的

标签: python selenium selenium-webdriver automation


【解决方案1】:

我无法发表评论,所以必须给出这个答案。
如果您确定元素存在,那么在执行行之前放置一个Thread.sleep (5000),如果可行,那么您将知道 selenium 在元素加载之前执行。然后,您删除 sleep 并使用显式等待等待页面上出现其他内容,然后执行其余代码

【讨论】:

    【解决方案2】:

    试试

    WebElement element_p = (new WebDriverWait(_driver, 3))
                .until(ExpectedConditions.visibilityOfElementLocated(By
                        .xpath("//div[@id='sizzle-1442313418270']/div/table/tbody/tr/td[3]"))).click();
    

    另一种可能是您的元素位于 iframe 中?

    【讨论】:

      【解决方案3】:

      在您的日期语句之前使用隐式等待语句

      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      

      在创建firefox构造函数之后执行wait语句会更好,因为在执行findElement语句之前,隐式语句肯定会运行

      如果它不起作用,那就去显式声明

      【讨论】:

      • .implicitlyWait() 设置默认等待,调用该代码时它实际上并不等待。你应该阅读the docs
      猜你喜欢
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 2022-07-05
      • 2016-10-31
      • 2021-10-11
      • 2020-11-29
      • 1970-01-01
      相关资源
      最近更新 更多