下面是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>
</div>
有一个用户输入的config.py。如果用户输入23456到config.code,selenium python如何选择第二个对象?我使用的是 find_by_css_selector()
来定位和选择对象,但它只能选择第一个对象,也就是 代码='12345'. 我试着用 find_by_link_text()
但它是一个 <p>
无元素 <a>
元素。谁能帮忙......
要根据用户的输入来定位元素,使用的是 硒 和 蟒蛇 你需要诱导 WebDriverWait 对于 visibility_of_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+ "']")))
使用 %s
在 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()='%s']"% str(user_input))))
使用 format()
在 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()='{}']".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
试试下面的xpath。
code = '23456'
element = driver.find_element_by_xpath("//p[@class='code' and text()='" +code +"']")