问题描述
我想通过文本获取元素,但这是数字?我猜? 例如,
<a class="ui-state-default" href="#">11</a>
driver.find_element_by_xpath('//*[@text="11"]')
如何找到该元素?
解决方法
driver.find_element_by_xpath('//*[contains(text,"11")]')
请在xpath上方使用此元素进行锻炼
,您可以通过文本内容访问Web元素(在这种情况下,即div标签):
driver.find_elements_by_xpath("//*[contains(text(),'11')]")
,
要通过文本查找元素,可以使用以下基于xpath的Locator Strategies中的任何一个:
-
使用
xpath
和text()
:element = driver.find_element_by_xpath("//*[text()='11']")
-
使用
xpath
和contains()
:element = driver.find_element_by_xpath("//*[contains(.,'11')]")
理想情况下,要找到需要为visibility_of_element_located()
引出WebDriverWait的元素,可以使用以下任一Locator Strategies:
-
使用
XPATH
:element = WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//a[@class='ui-state-default' and text()='11']")))
-
使用
XPATH
:element = WebDriverWait(driver,"//a[@class='ui-state-default' and contains(.,'11')]")))
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC