我无法单击获取超时异常的复选框

时间:2019-07-12 10:25:18

标签: python selenium

在运行用于单击复选框的代码时,我观察到超时异常。 我已经与time.sleep(80)等了,但没有成功

def __init__(self, driver):
    self.driver = driver

def filterclick(self):

   try:
  element=WebDriverWait(self.driver,80).until(EC.presence_of_element_located((By.XPATH,"//input[@class='select-all']")))
        element.click()
    finally:
        self.driver.close()

我要选中此复选框,但超时超时

复选框的HTML代码:

2 个答案:

答案 0 :(得分:0)

检查元素是否根本不可见。如果是这种情况,则会引发超时异常。

或者您可以尝试以下

element = driver.find_element_by_xpath("//input[@class='select-all']")
element.location_once_scrolled_into_view
element.click()

答案 1 :(得分:0)

尝试使用element_to_be_clickable方法来代替presentation_of_element_located。

try:
    wait = WebDriverWait(self.driver, 80)
    element = 
    wait.until(EC.element_to_be_clickable((By.XPATH,"//input[@class='select- 
    all']")))
    element.click()
finally:
    self.driver.close() 

这很可能会起作用,如果不能,您可以尝试使用隐式等待。我也遇到过类似的问题,但是它可以使用time.sleep函数。由于您已经尝试过time.sleep(secs),请尝试使用隐式等待。

这是使用方法:

self.driver.implicitly_wait(4)
element = find_element_by_xpath("//input[@class='select-all']")
element.click()

我建议使用“等待”变量,因为您可以在其他地方重复使用它,而不必重新输入所有内容。对于隐式等待,您可以根据自己的选择更改等待时间。