Selenium 不会看到元素,除非我手动调整 window 的大小

Selenium won't see elements unless I manually resize the window

所需元素之一位于页面的右上角,除非我手动调整 window 的大小以使该元素出现,否则 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()

我尝试使用

调整 window 的大小
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>

有人知道怎么解决吗?

非常感谢!

该错误意味着有一个不同的 element 覆盖了您尝试点击的 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() 将 return 元素确定为可点击后。所以你可以像这样去掉第二个 find:

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