我正在编写一个按请求按钮的机器人。
我滚动到请求按钮,按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个按钮。
为什么会引发异常,为什么不单击按钮?
答案 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