gpt4 book ai didi

javascript - Python和Selenium To “execute_script” 解决 “ElementNotVisibleException”

转载 作者:太空狗 更新时间:2023-10-30 02:19:13 24 4
gpt4 key购买 nike

我正在使用 Selenium 保存网页。单击某些复选框后,网页内容将发生变化。我想要的是单击一个复选框,然后保存页面内容。 (复选框由 JavaScript 控制。)

首先我使用了:

driver.find_element_by_name("keywords_here").click()

它以错误结束:

NoSuchElementException

然后我尝试了类似“xpath”的方式,隐式/显式等待:

URL = “the url”

verificationErrors = []
accept_next_alert = True

aaa = driver.get(URL)
driver.maximize_window()
WebDriverWait(driver, 10)

#driver.find_element_by_xpath(".//*[contains(text(), ' keywords_here')]").click()
#Or:

driver.find_element_by_xpath("//label[contains(text(),' keywords_here')]/../input[@type='checkbox']").click()

它给出了一个错误:

ElementNotVisibleException

帖子

How to force Selenium WebDriver to click on element which is not currently visible?

Selenium Element not visible exception

建议它应该在单击之前使复选框可见,例如使用:

execute_script

这个问题听起来很愚蠢,但是我如何从页面源代码中找出正确的语句来“execute_script”复选框的可见性?

除此之外,还有别的方法吗?

谢谢。

顺便说一下,这行 html 代码如下所示:

<input type="checkbox" onclick="ComponentArt_HandleCheck(this,'p3',11);" name="keywords_here">

它的 xpath 看起来像:

//*[@id="TreeView1_item_11"]/tbody/tr/td[3]/input

最佳答案

另一种选择是在 execute_script() 中创建 click():

# wait for element to become present
wait = WebDriverWait(driver, 10)
checkbox = wait.until(EC.presence_of_element_located((By.NAME, "keywords_here")))

driver.execute_script("arguments[0].click();", checkbox)

其中 EC 被导入为:

from selenium.webdriver.support import expected_conditions as EC

或者,作为黑暗中的另一个镜头,您可以使用 element_to_be_clickable 预期条件并以通常的方式执行点击:

wait = WebDriverWait(driver, 10)
checkbox = wait.until(EC.element_to_be_clickable((By.NAME, "keywords_here")))

checkbox.click()

关于javascript - Python和Selenium To “execute_script” 解决 “ElementNotVisibleException”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31397462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com