除非我手动调整窗口大小,否则Selenium不会看到元素

时间:2016-06-23 09:16:25

标签: python selenium selenium-chromedriver

其中一个所需元素位于页面的右上角,除非我手动调整窗口大小以使元素存在,否则selenium将看不到它。如果我这样做,一切正常。 Selenium会找到元素,点击它,然后做我想做的事情。这是我在python中的代码

wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='15_button']")))
num_list = driver.find_element_by_xpath("//input[@id='15_button']")
num_list.click()

我尝试使用

调整窗口大小
driver = webdriver.Chrome()
driver.set_window_size(1024, 1024)
driver.maximize_window()

在浏览器启动时确实使元素可见,但Selenium会给出错误

Message: unknown error: Element is not clickable at point (1206, 719). Other element would receive the click: <li id="15_input_5" class="selected">...</li>

有谁知道如何修复它?

非常感谢!

1 个答案:

答案 0 :(得分:3)

错误表示您尝试点击element的{​​{1}}不同element。如果Selenium试图单击它,则实际上会在覆盖它的元素上发生单击,因此会抛出此错误。您可以使用javascript点击它,这样无论element是否被覆盖都无关紧要。

num_list = driver.find_element_by_xpath("//input[@id='15_button']")
driver.execute_script("arguments[0].click();", num_list)

另一个提示给你。在您的代码示例中:

wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='15_button']")))
num_list = driver.find_element_by_xpath("//input[@id='15_button']")

wait.until()会在确定元素可点击后返回该元素。所以你可以像这样摆脱第二个find

num_list = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='15_button']")))