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

Hei*_*inz 2 python selenium-webdriver webdriverwait

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

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

click()行动应该有一个有条件的等待时间?

Hei*_*inz 5

我想出了这个:

def myClick(by, desc):
    wait = WebDriverWait(dr, 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()
Run Code Online (Sandbox Code Playgroud)

使用此功能,代码:

driver.find_element_by_link_text('Show Latest Permit').click()
Run Code Online (Sandbox Code Playgroud)

将会

myClick('link_text', 'Show Latest Permit')
Run Code Online (Sandbox Code Playgroud)

反而。

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