selenium python xpath在页面上查找元素text()

时间:2017-12-20 01:07:08

标签: python selenium xpath text

我尝试验证此示例中的文字Active:

<div class="details">
    <p class="double">
        <a href="url">Set as default</a>
        <br>
        <a id="modal124434" class="modalAction" href="#">Delete</a>
    </p>
    <span class="bold">TEXT</span>
    : 1234567890 (12/2017)
    <br>
    Active:
    <a class="game" href="#GAME">GAME</a>
</div>

我还需要检查TEXT以确保它在那里。我使用以下内容查找TEXT

foo = b.find_element_by_xpath('//span[contains(text(),"TEXT")]/..')

当我print(foo.text)时,我可以看到html示例中的所有文本abve。所以,我认为我可以这样做:

b.find_element_by_xpath('//span[contains(text(),"TEXT")]/..[contains(text(),"Active:")]/a[text()="GAME"]

但我得到NoSuchElement异常。我也试过了:

b.find_element_by_xpath('//*[contains(text(),"Active")]')

仍然一无所获。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用此xpath: - //span/following-sibling::text()[2]

driver.find_element_by_xpath(“// span / following-sibling :: text()[2]”)。text;

答案 1 :(得分:1)

要打印元素文本 TEXT 有效:游戏,您可以使用以下代码块:

  • 打印 TEXT

    print(b.find_element_by_xpath("//div[@class='details']//span[@class='bold']").get_attribute("innerHTML"))
    
  • 打印 Active:

    fullsting = b.find_element_by_xpath("//div[@class='details']").get_attribute("innerHTML")
    part_word = fullsting.split(")")
    words = part_word[1].split("G")
    print(words[0])
    
  • 打印 GAME

    print(b.find_element_by_xpath("//div[@class='details']//a[@class='game']").get_attribute("innerHTML"))
    

答案 2 :(得分:1)

回到这一点,我找到了一种方法来实现我原本想要的

b.find_element_by_xpath('//span[contains(text(),"TEXT")]/..[contains(.,"Active:")]/a[text()="GAME"]')

似乎使用text()仅查看出现在该Web元素上的第一个textNode。但是使用.会查看该元素的所有textNode以及附加到当前元素“下方”的任何childNode的所有textNode。