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

Y_K*_*_KL 1 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()
Run Code Online (Sandbox Code Playgroud)

我试图通过使用调整窗口大小

driver = webdriver.Chrome()
driver.set_window_size(1024, 1024)
driver.maximize_window()
Run Code Online (Sandbox Code Playgroud)

这确实使元素在浏览器启动时可见,但是 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>
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决它?

非常感谢!

Rem*_*coW 5

该错误意味着您尝试单击的element覆盖物有所不同element。如果 Selenium 试图点击它,点击实际上会发生在覆盖它的元素上,因此它会抛出这个错误。您可以使用javascript单击它,这样它是否element被覆盖都无关紧要。

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

给你的另一个提示。在您的代码示例中,您正在执行以下操作:

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

wait.until()一旦确定它是可点击的,将返回该元素。所以你可以find像这样摆脱第二个:

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