xml - 使用 XPath 获取属性并使用 value 属性提供内部文本

标签 xml selenium-webdriver xpath

给定这样的 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/

    相关文章:

    java - 什么 xml 解析器符合这些要求?

    c# - 如何使用 XmlTextWriter 生成 CDATA?

    xml - 真值计数器 XML

    java - HTTP 响应中的 XML

    jquery - 如何从 XML 文件输出 HTML?

    java - 如果所需的元素已经加载,使 Selenium Webdriver 停止加载页面?

    perl - 如何使用 perl 语言在 selenium 远程驱动程序中打开新选项卡并打开 url

    java - 如果元素存在,则断言元素不存在仍然测试通过

    python | Selenium |继续输出页面源代码,而不是我手动检查元素时看到的内容

    xml - XPath 除法运算符