代码之家  ›  专栏  ›  技术社区  ›  ivan_pozdeev RenanSS

等待元素并返回它

  •  0
  • ivan_pozdeev RenanSS  · 技术社区  · 7 年前

    根据 Waits — Selenium Python Bindings 2 documentation ,我可以等待元素出现并可见(例如,如果它是通过AJAX调用加载的),如下所示:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    d = selenium.webdriver.<whichever>()
    w = WebDriverWait(d,10)
    
    w.until(EC.visibility_of_element_located((By.XPATH,"<xpath>")))
    

    但是,在这之后要处理这个元素,我必须再次定位它(复制搜索参数),这非常不方便。 因为这是一项普通的任务,我很确定 selenium 必须有一些快捷方式,可以等待元素并在成功时返回它。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Guy    7 年前

    until 函数返回 WebElemwnt 从机场回来 Expected_condition

    与超时过期前的null或false不同。

    visibility_of_element_located 内部使用 driver.find_element WebElement 将被退回。

    element = w.until(EC.visibility_of_element_located((By.XPATH,"<xpath>")))
    # do something with the element