python - 如何在 python 中使用 selenium 选择文本框
问题描述
HTML我想使用XPath
或任何其他定位器选择文本框,但我无法这样做。该代码在页面的一部分上工作正常,而在页面的另一半部分使用任何定位器都不能正常工作。我不确定我的代码是错误的还是其他问题。
我附上了 HTML 部分。
这是我的代码:
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Chrome()
driver.get('Website')
driver.implicitly_wait(50)
driver.find_element_by_xpath('//*[@id="j_username"]').send_keys("Username")
driver.find_element_by_xpath('//*[@id="j_password"]').send_keys("Password")
driver.find_element_by_xpath('//*[@id="b_submit"]').click()
driver.find_element_by_xpath('//*[@id="15301"]/div[1]/a/span').click()
driver.find_element_by_xpath('//*[@id="22261"]/a').click()
driver.find_element_by_xpath('//*[@id="22323"]/a').click()
driver.implicitly_wait(50)
driver.find_element_by_xpath('//*[@id="filterRow"]').clear()
最后一行是我收到以下错误的地方:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="filterRow"]"}
解决方案
您可以等到元素加载使用wait
-
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 20)
Filter_Row = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="filterRow"]')))
Filter_Row.clear()
试试上面的代码,看看会发生什么。
推荐阅读
- firebase - 使用 Firebase 安全规则、自定义域和 CloudFlare 的静态托管 Google Cloud Storage
- typescript - 重新导出打字稿 .d.ts 定义文件中的所有类型
- rest - 如何使用camel-openapi-java而不是camel-swagger-java组件在Apache Camel OpenAPI文档中记录复杂对象?
- python - 为什么多处理比简单的 for 循环慢?
- ios - SwiftUI - TabView initial tabItem not displaying text
- c - 扫描c中的任意数量的字符
- python - SWIG:从 python 和 C++ 读/写相同的变量
- python - 从 img 获取 Title 传递 NoneType 对象
- python - 在 tkinter 中上传图标时遇到问题
- gremlin - 提供的遍历未映射到值