Webelement中的xpath查找硒

时间:2018-06-21 20:52:01

标签: python selenium xpath selenium-chromedriver

我有此页面:

<html>
<head>
    <title>Document Example</title>
</head>
<body>
    <div id="container">
        <div class="section">
            <h1>Section 1</h1>
            <li class="links">
                <ul><a href="link.com/1"></a></ul>
                <ul><a href="link.com/2"></a></ul>
                <ul><a href="link.com/3"></a></ul>
            </li>
        </div>
        <div class="section">
            <h1>Section 2</h1>
            <li class="links">
                <ul><a href="link.com/4"></a></ul>
                <ul><a href="link.com/5"></a></ul>
                <ul><a href="link.com/6"></a></ul>
            </li>
        </div>
        <div class="section">
            <h1>Section 3</h1>
            <li class="links">
                <ul><a href="link.com/7"></a></ul>
                <ul><a href="link.com/8"></a></ul>
                <ul><a href="link.com/9"></a></ul>
            </li>
        </div>
    </div>
</body>
</html>

我希望按部分分组链接:

driver.get("mypage.com")

sections = driver.find_elements_by_xpath("//div[@class='section']")
for section in sections:
    section_name = section.find_element_by_xpath("//h1[@class='name']").get_attribute('innerHTML') #This fails

    links = section.find_elements_by_xpath("//ul/a") #This find all links in page, not only links in section

问题是,我通过xpath找到了所有页面中的元素列表(WebElement),现在我想通过xpath查找元素部分而不是整个页面中的所有特定元素。

怎么了?

编辑1

这可以解决问题(现在xpath开始是点。): driver.get(“ mypage.com”)

sections = driver.find_elements_by_xpath("//div[@class='section']")
for section in sections:
    section_name = section.find_element_by_xpath(".//h1[@class='name']").get_attribute('innerHTML') #This fails

    links = section.find_elements_by_xpath(".//ul/a") #This find all links in page, not only links in section

以下是您在http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webelement.WebElement.find_element_by_xpath

之后找到的说明。

2 个答案:

答案 0 :(得分:0)

这是您要找的东西吗?您可以尝试以下方法:

//*[@id="container"]/div/h1/following-sibling::li/ul

答案 1 :(得分:0)

可能会工作

sections = driver.find_elements_by_xpath("//div[@class='section']")
for i, section in enumerate(sections):
    section_name = section.text
    links = section.find_elements_by_xpath("//div[@class='section'][%s]//a" % str(i+1))