如何使用Selenium和Python查找与用户输入相关的元素?
以下是HTML结构:如何使用Selenium和Python查找与用户输入相关的元素?,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,以下是HTML结构: <div class='list'> <div> <p class='code'>12345</p> <p class='name'>abc</p> </div> <div> <p class='code'>23456</p> <p class='name'>bcd</p> </
<div class='list'>
<div>
<p class='code'>12345</p>
<p class='name'>abc</p>
</div>
<div>
<p class='code'>23456</p>
<p class='name'>bcd</p>
</div>
</div>
12345
abc
23456
bcd
还有一个config.py用于用户输入。如果用户将23456输入config.code,selenium python如何选择第二个对象?我正在使用find\u by\u css\u selector()
定位和选择对象,但它只能选择第一个对象,即code='12345'。我尝试使用find\u by\u link\u text()
,但它是
元素,而不是
元素。任何人都可以帮助….尝试以下xpath:
code = '23456'
element = driver.find_element_by_xpath("//p[@class='code' and text()='" +code +"']")
要根据用户的输入来定位元素,请使用,并且您需要对元素的可见性进行归纳。_element_located(),您可以使用以下任一方法:
- 在XPATH中使用变量:
user_input = '23456' element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='list']//div/p[@class='code' and text()='" +user_input+ "']")))
user_input = '23456' element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='list']//div/p[@class='code' and text()='%s']"% str(user_input))))
user_input = '23456' element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='list']//div/p[@class='code' and text()='{}']".format(str(user_input)))))
- 在
中使用XPATH
:%s
user_input = '23456' element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='list']//div/p[@class='code' and text()='" +user_input+ "']")))
user_input = '23456' element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='list']//div/p[@class='code' and text()='%s']"% str(user_input))))
user_input = '23456' element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='list']//div/p[@class='code' and text()='{}']".format(str(user_input)))))
- 在
中使用XPATH
:format()
user_input = '23456' element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='list']//div/p[@class='code' and text()='" +user_input+ "']")))
user_input = '23456' element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='list']//div/p[@class='code' and text()='%s']"% str(user_input))))
user_input = '23456' element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='list']//div/p[@class='code' and text()='{}']".format(str(user_input)))))
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
元素吗?@LoganGeorge No.One div表示一个对象,我想选择第二个对象,代码是23456,名称是bcd。对。然后,为了得到兄弟姐妹,我想它应该是驱动程序。通过xpath(//p[@class='code'和text()=''+code+']/后面的兄弟姐妹::p)找到元素(following sibling::p)@frianH it wokrs!但我并不真正理解xpath的用法。你能解释一下“//p[@class='code'和text()=”“+code+”]”吗?@LoganGeorge兄弟姐妹你在说什么吗?@yukhan这只是使用
和
表达式的简单逻辑。尝试搜索类名为code
的p
标记,该标记的文本为23456
@YukChan,用于字符串合并。