Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
selenium python xpath在第页上查找元素text()时遇到问题_Python_Selenium_Xpath_Text - Fatal编程技术网

selenium python xpath在第页上查找元素text()时遇到问题

selenium python xpath在第页上查找元素text()时遇到问题,python,selenium,xpath,text,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> &l

我试图验证此示例中的文本
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>
当我
print(foo.text)
时,我可以看到html示例abve中的所有文本。所以,我想我可以这样做:

b.find_element_by_xpath('//span[contains(text(),"TEXT")]/..[contains(text(),"Active:")]/a[text()="GAME"]
但我得到了一个NoTouchElement例外。我也试过:

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

但还是一无所获。任何帮助都将不胜感激。

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


通过xpath(“//span/following sibling::text()[2]”)查找元素

要打印元素文本,可以使用以下代码块:

  • 要打印
    文本

    print(b.find_element_by_xpath("//div[@class='details']//span[@class='bold']").get_attribute("innerHTML"))
    
    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])
    
    print(b.find_element_by_xpath("//div[@class='details']//a[@class='game']").get_attribute("innerHTML"))
    
  • 要打印激活的

    print(b.find_element_by_xpath("//div[@class='details']//span[@class='bold']").get_attribute("innerHTML"))
    
    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])
    
    print(b.find_element_by_xpath("//div[@class='details']//a[@class='game']").get_attribute("innerHTML"))
    
  • 要打印
    游戏

    print(b.find_element_by_xpath("//div[@class='details']//span[@class='bold']").get_attribute("innerHTML"))
    
    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])
    
    print(b.find_element_by_xpath("//div[@class='details']//a[@class='game']").get_attribute("innerHTML"))
    

    • 回到这一点上,我找到了一种方法来做我最初想要的事情

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

      似乎使用
      text()
      只查看该web元素上出现的第一个textNode。但是使用
      会查看该元素的所有文本节点,以及附加到当前元素“下方”的任何子节点的任何文本节点。

      在本例中,您要查找的文本位于两个元素之间。也许这里的答案会有帮助:您要准确定位哪个
      text
      ?文本或活动:或游戏?您需要从节点获取子字符串
      “活动:
      ”,还是需要通过子字符串
      “文本”
      “活动:
      ”来定位元素?@debanjanbI和@Andersson希望在可能的情况下验证所有三合一xpath的文本@Tim所以一旦我找到了
      文本()[2]
      我怎么才能知道该元素中有什么文本呢?因此,对于我正在做的事情,我实际上不需要验证
      活动:
      文本,因为如果
      活动:
      不存在,包含
      游戏的
      将不会出现。因此,一旦我找到
      文本()[2],我就能够使用
      '///span[contains(,“TEXT”)]/../a[TEXT()=“GAME”]'
      我如何判断该元素中的文本?尝试此操作时出现异常
      selenium.common.exceptions.webdrivexception:Message:TypeError:Window.getComputedStyle的参数1未实现接口元素。
      我最终使用了您的部分答案来解决此问题。我最近意识到我从来没有把我的作品到处张贴。我使用了下面的xpath:“//span[text()=“text”]/下面的兄弟姐妹::a[text()=“GAME”]”
      innerHTML
      属性很酷,我不知道这一点,但我希望使用一个xpath字符串同时验证这三项。@DanielWillemin很高兴知道这一点。你的问题得到回答了吗?遗憾的是,没有,我确实找到了一个不涉及文本
      活动:
      的解决方案。回到这里,我找到了一种方法来做我最初想要的事情。我已经公布了我的答案。