我正在尝试使用我的 python selenium 代码写入文本框,但由于文本框的父标签被隐藏而出现错误。
driver.find_element_by_xpath("//input[@itemcode='XYZ']").send_keys(1)
我看到了一个使用 java 的 Javascript 执行器解决方法,但需要一些类似的 python 脚本帮助。
提前致谢!!
试试这个解决方法(在 Firefox 和 Chrome 中测试):
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
browser = webdriver.Firefox() # Get local session(use webdriver.Chrome() for chrome)
browser.get("http://www.example.com") # load page from some url
assert "example" in browser.title # assume example.com has string "example" in title
try:
# temporarily make parent(assuming its id is parent_id) visible
browser.execute_script("document.getElementById('parent_id').style.display='block'")
# now the following code won't raise ElementNotVisibleException any more
browser.find_element_by_xpath("//input[@itemcode='XYZ']").send_keys(1)
# hide the parent again
browser.execute_script("document.getElementById('parent_id').style.display='none'")
except NoSuchElementException:
assert 0, "can't find input with XYZ itemcode"
另一种解决方法甚至更简单(假设文本框的 id 是“XYZ”,否则使用任何可以检索它的 JS 代码)并且如果您只想更改文本框的值可能会更好:
browser.execute_script("document.getElementById('XYZ').value+='1'")