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很高兴知道这一点。你的问题得到回答了吗?遗憾的是,没有,我确实找到了一个不涉及文本活动:
的解决方案。回到这里,我找到了一种方法来做我最初想要的事情。我已经公布了我的答案。