python - 使用 python 和 Selenium 等待元素可点击

标签 python selenium-webdriver webdriverwait

有很多方法可以等待一个对象,例如在 selenium python 中可点击的按钮。我使用 time.sleep() 和/或 WebDriverWait...until,它工作正常。

但是,当有数百个对象时,有没有办法在全局范围内设置默认时间延迟,而不是在每个对象上实现它?

click() Action 应该有条件等待时间?

最佳答案

我想出了这个:

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

def myClick(by, desc):
    wait = WebDriverWait(driver, 10)
    by = by.upper()
    if by == 'XPATH':
        wait.until(EC.element_to_be_clickable((By.XPATH, desc))).click()
    if by == 'ID':
        wait.until(EC.element_to_be_clickable((By.ID, desc))).click()
    if by == 'LINK_TEXT':
        wait.until(EC.element_to_be_clickable((By.LINK_TEXT, desc))).click()

有了这个函数,代码:

driver.find_element_by_link_text('Show Latest Permit').click()

将会

myClick('link_text', 'Show Latest Permit')

改为。

我已经运行了几个星期,点击了数百个元素,我再也没有看到错误。

关于python - 使用 python 和 Selenium 等待元素可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56380889/

相关文章:

python - 抓取的网站数据未写入 CSV

python - WebDriverWait 未按预期工作

python - 如何比较数据框中不同年份月度值的变化,Pandas/Python

java - Gradle 无法解析 sikulixapi

Python Tkinter 标签每 10 秒重绘一次

javascript - 如何使用 Watir 在网页上添加和执行 html2canvas

java - 如何获取div标签的值

java - Selenium 等待 AJAX 编辑页面上的文本

Python正则表达式查找与其他单词分隔的单词

python - 使用编解码器读取标准输入时出现延迟