【问题标题】:selenium xpath locator is not working: timeOutExceptionselenium xpath 定位器不工作:timeOutException
【发布时间】:2018-11-04 22:09:15
【问题描述】:

我有一个页面,在检查后发现它提供了,

<a class="SomeClass" href="#/sObject/701R00000004qi1IAA/view" title="Test;a">Test<a--></a>" 

我想验证页面是否有701R00000004qi1IAA ID。我正在使用以下代码:

locator = "/a[contains(@href,'" +ID+"')]"

然后

getWebDriverUtil.waitForElementPresent(By.xpath(locator), 10000 ).isDisplayed();

但我收到了timeOutException。但是手动我可以确认该目标页面上存在带有 id 的字段。 我在这里做错了什么?

【问题讨论】:

  • findElements 可以遍历所有 //a[@class='someclass'] 并且如果你得到每个的 outerHtml 然后你可以看看你的 id 是否错误。页面上有 iframe 吗?

标签: selenium xpath selenium-webdriver


【解决方案1】:

您的定位器:/a[contains(@href,'" +ID+"')]

/a - 尝试使用“//a”在整个文档中搜索,而不是仅在第一级搜索

希望对您有所帮助。

【讨论】:

  • 谢谢鲍里斯,但不幸的是,这个改变很有效。它仍然失败并出现同样的异常。
  • “一些例外”让我陷入了死胡同。
  • 我的意思是同样的异常:TimeoutException。
  • 好的,这意味着两件事。 1.元素不存在。 2.定位器错误。试试这个:“//a[contains(@href,'701R00000004qi1IAA')]”应该可以工作
【解决方案2】:

我也会尝试使用 双斜杠 在 DOM 内的任何位置搜索链接:

//a[contains(@href, '" + ID + "')]

【讨论】:

    【解决方案3】:

    您的 xpath 定位器是正确的。使用显式等待而不是 elementpresent 方法进行检查。

    WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.xpath(locator)));
    

    这会在抛出 TimeoutException 之前等待最多 10 秒,或者如果它发现元素将在 0 - 10 秒内返回它。 WebDriverWait 默认每 500 毫秒调用一次 ExpectedCondition,直到成功返回。

    在这里您可以增加 Webdriver 的等待时间。希望你能取得成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 2010-10-30
      • 2021-12-31
      • 2017-06-05
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      相关资源
      最近更新 更多