【问题标题】:Why explicit wait is waiting for entire wait time even though element is visible/clickable before the wait time is over为什么显式等待正在等待整个等待时间,即使元素在等待时间结束之前可见/可点击
【发布时间】:2019-07-15 09:14:18
【问题描述】:

我已经给了 60 秒的等待时间,我正在使用等待直到元素可点击/可见,但脚本正在等待整个 30 秒,即使该元素在 UI 上可见并且也可点击?

我尝试使用最新的 selenium 版本,尝试使用不同的等待也使用不同的定位器。但它没有工作

【问题讨论】:

  • 它是抛出 'TimeOutException' 异常还是只是等待?你应该添加你的代码。
  • 在某些情况下它会抛出异常,但在大多数情况下它会等待整个时间和执行操作。以下是单击一个元素的方法。 (我使用过类似的等待。),等待时间为 60 秒 public viod clickReset(){ genericPage.scrollUp(); wait.until(ExpectedConditions.elementToBeClickable(resetLink)); resetLink.click(); }

标签: selenium-webdriver selenium-chromedriver


【解决方案1】:

原因可能在:

  1. 该元素属于 iframe,因此您需要先切换到 iframe,然后再尝试在其中定位任何内容
  2. 该元素属于Shadow DOM,因此您需要定位ShadowRoot对象,将其转换为WebElement并找到您要点击的子元素
  3. 您的定位器不正确,请尝试获取页面源并将其保存到文件中。完成后,使用您最喜欢的browser developer tools 定位元素
  4. 显式等待的语法不正确。查看 Explicit WaitsHow to use Selenium to test web applications using AJAX technology 获取代码示例

今后考虑将页面源代码和您的代码添加到您的问题中,因为您获得全面答案的机会会更高,否则我们必须“盲目拍摄”

【讨论】:

  • it 脚本在等待整个等待时间后执行操作,但我无法理解如果元素可见或可点击,那么为什么我的脚本正在等待整个等待时间。下面是我正在使用的一种方法。 public void getAminitiesFilter(){ WebElement amenityFilter=wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//label[@for='amenity']"))); genericPage.scrollToElement(amenityFilter); }
猜你喜欢
  • 1970-01-01
  • 2017-10-18
  • 2022-10-15
  • 2022-11-28
  • 1970-01-01
  • 2020-10-30
  • 2022-10-18
  • 2015-10-11
  • 2021-03-25
相关资源
最近更新 更多