给定这样的 XML 结构:
<table>
<thead>
<tr>
<th><div data-col="0">First Name</div></th>
<th><div data-col="1">Last Name</div></th>
<th><div data-col="2">Age</div></th>
<th><div data-col="3">Id</div></th>
<th><div data-col="4">City</div></th>
</tr>
</thead>
<tbody>
<tr data-row="0">
<td data-col="0"><div>Ivan</div></td>
<td data-col="1"><div>Ivanov</div></td>
<td data-col="2"><div>35</div></td>
<td data-col="3"><div>EFF-12218</div></td>
<td data-col="4"><div>London</div></td>
</tr>
</tbody>
</table>
data-col
的值? (其中 text = 'id'
),对于第一个元素?
(
'EFF-12218'
) 使用 data-col
的找到值? 最佳答案
检索 的值数据-col 其中文本是 id
您可以使用以下任一 Locator Strategies :
XPATH
:print(driver.find_element_by_xpath("//table/thead//th/div[text()='Id']").get_attribute("data-col"))
理想情况下,您需要为
visibility_of_element_located()
诱导 WebDriverWait您可以使用以下解决方案:XPATH
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//table/thead//th/div[contains(., 'Id')]"))).get_attribute("data-col"))
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
检索值 EFF-12218 关于
data-col="3"
您可以使用以下解决方案:XPATH
:data-col = driver.find_element_by_xpath("//table//th//div[text()='Id']").get_attribute("data-col")
print(driver.find_element_by_xpath("//table//tbody/tr//td[@data-col='"+ data-col +"']/div").get_attribute("innerHTML"))
理想情况下,您需要为
visibility_of_element_located()
诱导 WebDriverWait您可以使用以下解决方案:XPATH
:data-col = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//table//th//div[contains(., 'Id')]"))).get_attribute("data-col")
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//table//tbody/tr//td[@data-col='"+ data-col +"']/div"))).get_attribute("innerHTML"))
关于xml - 使用 XPath 获取属性并使用 value 属性提供内部文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59052928/