首页 > 解决方案 > 如何在 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"]"}

标签: pythonseleniumselenium-webdriver

解决方案


您可以等到元素加载使用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()

试试上面的代码,看看会发生什么。


推荐阅读