【问题标题】:Python selenium webdriver time exception when using wait until使用等待时的Python selenium webdriver时间异常
【发布时间】:2016-05-06 05:25:33
【问题描述】:

在完成之前的表单之前,网站表单选择被禁用。网站需要一些时间来识别填写的内容。我尝试使用wait.until(EC.element_to_be_clickable((By.ID, "..."))),但它返回给我一个时间异常错误。我尝试了 sleep(2),它可以工作。我想知道在这种情况下我是否仍然可以使用等待。

【问题讨论】:

  • 您应该指定要等待多长时间才能达到预期条件。在 KevGeo (driver, 30) 提供的回答中,意味着您的脚本将等待 30 秒以获取所需元素,如果仍然无法点击,则引发 TimeOutException

标签: python-2.7 selenium selenium-webdriver webdriver wait


【解决方案1】:

你的问题不清楚。您应该详细展示到目前为止您已经尝试/完成的内容。不过,据我了解,我会尽量回答您的一般问题。

要等待一个元素可点击,正确的语法应该是:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 30).until(
EC.element_to_be_clickable((By.ID, "ID_of_the_element")));
element.click();

在这种情况下,我使用 ID 作为元素定位器。你也可以使用其他的,比如 XPATH。

希望有所帮助。

【讨论】:

  • 感谢您的回复,并为我的混乱文字感到抱歉。我使用了 wait = WebDriverWait(browser, 10),它返回给我一个时间异常错误。我假设这里的 10 是 10 秒。我想知道表单(选择选项)是否不可点击。
  • 选择选项是可点击的,但您需要使用正确的方法。这就是我单击选择选项的方式:labels = [list of required/desirable options/a single option]; element = driver.find_element_by_id(element_id); for option in element.find_elements_by_tag_name('option'): if option.text in labels: option.click(); 如果这有帮助,请告诉我。 :)
  • @YingheChen 如果上面的代码 sn-p 难以理解,请告诉我,我很乐意将其作为编辑添加到我的答案中。
  • 谢谢kev,我仍然无法点击按钮。我认为这可能是由两件事造成的。一个是当前按钮在浏览器屏幕之外,我需要向下滚动一点才能看到按钮。我试图向下滚动但仍然无法正常工作。其次是这个网站使用的是ng-click,我不熟悉。这是代码的屏幕截图。 workforothers.com/Yinghe/code.png再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 2021-03-31
  • 2012-05-11
相关资源
最近更新 更多