Python Selenium 从内联锚获取 link_text

Python Selenium Getting link_text from an anchor that is inline

在 selenium 中如何正确编写 xpath 或 css_selector 解析html如

<div class="fxg-rte      " style="color:;" data-emptytext="Rich Text">
<p>United States | <a href="https://www.fedex.com/en-us/home.html">English</a>
 | <a href="https://www.fedex.com/es-us/home.html">Español</a></p>
<p>China | <a href="https://www.fedex.com/en-cn/home.html">English</a>
 | <a href="https://www.fedex.com/zh-cn/home.html">简体中文</a></p>
<p>Mexico | <a href="https://www.fedex.com/en-mx/home.html">English</a>
 | <a href="https://www.fedex.com/es-mx/home.html">Español</a></p>
<p>India | <a href="https://www.fedex.com/en-in/home.html">English</a></p>
<p>Canada | <a href="https://www.fedex.com/en-ca/home.html">English</a>
 | <a href="https://www.fedex.com/fr-ca/home.html">Français</a></p>
</div>

执行以下操作:

查找任何包含文本“United States”的 <p> 元素 然后在元素中找到任何具有“English”的 link_text 然后点击 link.

具体来说,我只想在

标签内查看 link_text 给定标准。

试试下面的 xpath :

//div[@data-emptytext='Rich Text']//p

会有几个 p 标签,您可能需要使用 find_elements 而不是 find_element

在代码中是这样的:

driver.maximize_window()
driver.get("https://www.fedex.com/global/choose-location.html")
wait = WebDriverWait(driver, 10)
for names in driver.find_elements(By.XPATH, "(//div[contains(@class, 'richtext parbase section')])[1]/descendant::p"):
    print(names.get_attribute('innerHTML'))
    if "United States" in names.get_attribute('innerHTML'):
        print("matched")
        lang_href = names.find_element(By.XPATH, "((//div[contains(@class, 'richtext parbase section')])[1]/descendant::p/a[1])[1]")
        lang_href.click()
        break