Python 除非我手动调整窗口大小,否则Selenium不会看到元素
其中一个所需元素位于页面的右角,除非我手动调整窗口大小以显示该元素,否则selenium将不会看到它。如果我这样做,一切都会很好。Selenium将找到元素,单击它,然后执行我希望它执行的操作。这是我用python编写的代码Python 除非我手动调整窗口大小,否则Selenium不会看到元素,python,selenium,selenium-chromedriver,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_b
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>
有人知道怎么修吗
非常感谢 该错误意味着有一个不同的元素覆盖了您试图单击的元素。如果Selenium试图点击它,点击实际上会发生在覆盖它的元素上,因此它会抛出此错误。您可以使用javascript单击它,这样无论元素是否被覆盖都无所谓
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将在确定元素可单击后返回该元素。因此,您可以像这样摆脱第二个发现:
该错误意味着有另一个元素覆盖了您尝试单击的元素。如果Selenium试图点击它,点击实际上会发生在覆盖它的元素上,因此它会抛出此错误。您可以使用javascript单击它,这样无论元素是否被覆盖都无所谓
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将在确定元素可单击后返回该元素。因此,您可以像这样摆脱第二个发现:
您通常希望以用户希望的方式与站点交互。使用JS直接单击隐藏元素通常不是一个好的做法,因为用户不能这样做。找出隐藏该元素的内容并将其关闭,或者您可能只需要短暂等待该元素出现/消失。wait.until提示很好,但您可以进一步添加。单击到行的末尾,根本不需要将该元素存储在num_列表中。您通常希望以用户喜欢的方式与网站进行交互将使用JS直接单击隐藏元素通常不是一个好的做法,因为用户不能这样做。找出隐藏该元素的内容并将其关闭,或者您可能只需要短暂等待该元素出现/消失。wait.until提示很好,但您可以进一步添加。单击到行的末尾,根本不需要将该元素存储在num_列表中。