Selenium-等待元素出现,可见且可交互

问题描述 投票:0回答:4

我有一个硒脚本(python),单击一个答复按钮以使该类显示anonemail。班级anonemail出现所需的时间各不相同。因此,我必须使用sleep直到元素出现。我想等到班级出现,而不要使用睡眠。我听说过等待命令,但是我不知道如何使用它们。

这是我到目前为止的内容:

browser.find_element_by_css_selector(".reply-button").click()
sleep(5)
email=browser.find_element_by_css_selector(".anonemail").get_attribute("value")
python selenium selenium-webdriver webdriverwait expected-condition
4个回答
1
投票

根据最佳做法:

  • 如果您的用例用于验证任何元素的presence,则需要诱导WebDriverWait,将expected_conditions设置为presence_of_element_located(),这是检查元素是否存在于DOM上的期望页面。这并不一定意味着该元素是可见的。因此,有效的代码行将是:

    presence_of_element_located()
  • 如果您的用例是要提取任何属性任何元素,则需要诱导WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".reply-button"))).click() ,将WebDriverWait设置为expected_conditions,这是检查元素是否存在于DOM上的期望页面并可见。可见性意味着不仅显示元素,而且其高度和宽度都大于0。因此,在您的用例中,有效的代码行是:

    visibility_of_element_located(locator)
  • 如果您的用例是在任何元素上调用visibility_of_element_located(locator),则需要促使email = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "element_css"))).get_attribute("value") click()设置为WebDriverWait,这是检查和查看元素的期望,例如您可以单击它。因此,在您的用例中,有效的代码行将是:

    expected_conditions

参考

您可以在以下位置找到几个详细的讨论:


0
投票

您可以使用等待。检查有关此链接的更多信息:WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".reply-button"))).click()

在下面的示例中,使用功能visible_of_element_located,我们等待元素显示10秒钟。

WebDriverWait not working as expected

0
投票

您可以使用Selenium: Check for the presence of element

selenium watis

它等待直到元素被加载。

在您的情况下,可以实现,

driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
    element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()

0
投票

单击implicitly_wait按钮后,像下面一样使用from selenium import webdriver driver = webdriver.Firefox() driver.implicitly_wait(15) driver.get("http://url") driver.find_element_by_id("id_of_element").click()

browser.implicitly_wait(10)
browser.find_element_by_css_selector(".reply-button").click()
email=browser.find_element_by_css_selector(".anonemail").get_attribute("value")

正在导入:

reply

.visibility_of_element_located

© www.soinside.com 2019 - 2024. All rights reserved.