> <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()
,并且您可以使用以下定位器策略之一:
-
使用
XPATH
和childNodes: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())
-
使用
XPATH
和splitlines()
: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