XPath:在另一个DIV中获取给定条件的文本

时间:2019-01-28 20:34:48

标签: python selenium xpath

我正在尝试从这样的结构中获取文本:

...
  <div class="a">
    <div class="a">
      <div class="a">
        <div class="inner">
          <a>
            <div class="a">...</div>
            <div class="a">&gt;</div>
            <div class="important class">Some interisting text</div>
            <div class="a">...</div>
          </a>
          <a>
            <div class="a">
              <button class="criterion A">...</button>
            </div>
          </a>
        </div>
      </div>
    </div>
  </div>
  <div class="a">
    <div class="a">
      <div class="a">
        <div class="inner">
          <a>
            <div class="a">...</div>
            <div class="a"/>
            <div class="important class">Some interisting text</div>
            <div class="a">...</div>
          </a>
          <a>
            <div class="a">
              <button class="criterion B">...</button>
            </div>
          </a>
        </div>
      </div>
    </div>
  </div>

...

我想要的是:
从div中通过class =“ important class”从div获得文本的路径,该路径与button具有class="B"属性的标准相匹配。

在使用硒时,我尝试了以下类似的操作来检索XPath列表:

list_xpath = driver.find_elements_by_xpath('.//div[@class="importante class" and .//button[@class="cirterion B"]]')

但是它返回一个空列表。
要检索文本,我稍后再做:

for path in list_xpath:
   print(path.text)

给定位于另一个分支中的条件,获取这些文本的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

尝试此XPath:

//a[.//button[@class="cirterion B"]]/preceding-sibling::a//div[@class="importante class"]

答案 1 :(得分:1)

您可以使用以下XPath-1.0表达式获取text()Some interisting text

//div[a/div/@class='important class' and a/div/button/@class='criterion B']/a/div[@class='important class']/text()

在整个Python表达式中,将是:

list_xpath = driver.find_elements_by_xpath("//div[a/div/@class='important class' and a/div/button/@class='criterion B']/a/div[@class='important class']/text()")