为什么滚动会引发Selenium Webdriver异常?

时间:2018-12-23 17:28:04

标签: python python-3.x selenium selenium-webdriver webdriverwait

我正在编写一个按请求按钮的机器人。

我滚动到请求按钮,按ID查找它,然后单击它。

我正在使用Safari和Python 3。

#pop_up_request_buttons_id_list - all of the ids

button = driver.find_element_by_id(pop_up_request_buttons_id_list[2])
driver.execute_script("return arguments[0].scrollIntoView();", button)

print(pop_up_request_buttons_id_list[2])
button.click()

由于某种原因,这会引发Selenium Webdriver异常,而没有消息。

注意:

滚动到按钮的父类不会引发异常,并且可以单击按钮。我还要指出,如果我滚动到父类,则只有一个按钮可见,但是当我按id滚动时,滚动后在屏幕上可见2个按钮。

为什么会引发异常,为什么不单击按钮?

1 个答案:

答案 0 :(得分:0)

要摆脱没有消息的 Selenium webdriver异常,您需要为所定位元素的可见性诱使 WebDriverWait ,并且可以使用以下解决方案:

button = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.ID, "pop_up_request_buttons_id_list[2]")))
driver.execute_script("arguments[0].scrollIntoView();", button)

注意:您必须添加以下导入:

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