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



在运行用于单击复选框的代码时,我观察到超时异常。我等了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 代码:

检查元素是否完全不可见。如果是这种情况,它将引发超时异常。

或者您可以尝试以下操作

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

尝试使用element_to_be_clickable方法来代替presence_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()

我建议使用"wait"变量,因为您可以在其他地方重用它,而不必重新键入所有这些。对于隐式等待,您可以根据自己的选择更改等待持续时间。

最新更新