【问题标题】:Finding the xpath label @for tag's child查找 xpath 标签 @for 标签的子标签
【发布时间】:2020-11-20 14:40:59
【问题描述】:
>     <div class="grid_8 alpha participant-info-fields">    
>                       <label for="grandTotal"><b>Grand Total:</b></label>
>                       $10,280.55
>                   </div>

这是我试图达到 $ 金额的 html。 我试过 //label[@for="grandTotal"]/child::node()

这只会突出显示 GrandTotal 文本。由于 $ 金额没有属性,我无法找到它。

PS:我可以通过以下方式到达节点:**//*[@id="planForm"]/div[3]/h3/div/text()**,但这不起作用,因为 Selenium 仅适用于 Element 节点。

【问题讨论】:

    标签: java selenium xpath


    【解决方案1】:

    文本 $10,280.55 位于文本节点内。因此,要打印文本,您必须为visibility_of_element_located() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

    • 使用XPATHchildNodes

      print(driver.execute_script('return arguments[0].lastChild.textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[contains(@class, 'alpha participant-info-fields')][./label[@for='grandTotal']]")))).strip())
      
    • 使用XPATHsplitlines()

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[contains(@class, 'alpha participant-info-fields')][./label[@for='grandTotal']]"))).get_attribute("innerHTML").splitlines()[4])
      
    • 注意:您必须添加以下导入:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      

    【讨论】:

    • 这就像一个魅力。然而,对于java,我不得不稍微调整一下。 String test = driver.findElement(By.xpath("//div[contains(@class, 'alpha参与者信息字段')][./label[@for='grandTotal']]")).getAttribute( "innerHTML").split()[3]
    • @BornToBeAGamer 哎呀,我以为你用的是 Python。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多