查找 xpath 标签@for标记的子项


>     <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()

这只会高亮显示"总计"文本。由于$amount没有属性,我无法找到它。

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

文本$10280.55位于文本节点内。因此,要打印文本,您必须诱导WebDriverWait等待visibility_of_element_located(),并且您可以使用以下定位器策略之一:

  • 使用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
    

最新更新