Javascript 如何为介于before::和after:之间的文本编写定位器:

Javascript 如何为介于before::和after:之间的文本编写定位器:,javascript,selenium,selenium-webdriver,xpath,css-selectors,Javascript,Selenium,Selenium Webdriver,Xpath,Css Selectors,我正在尝试为下面的文本编写xpath,当在chropath(chrome插件)中突出显示时,它可以正常工作。但是在运行时它失败了,尽管它在应用程序中是可见的。我在谷歌上找不到正确的答案。请帮我解决这个问题 <div class="abc"> ::before <content style="">Please fill out this field.</content> ::after </div> ::之前 请填写这个字段。 ::之后 xpa

我正在尝试为下面的文本编写xpath,当在chropath(chrome插件)中突出显示时,它可以正常工作。但是在运行时它失败了,尽管它在应用程序中是可见的。我在谷歌上找不到正确的答案。请帮我解决这个问题

<div class="abc">
::before
<content style="">Please fill out this field.</content>
::after
</div>

::之前
请填写这个字段。
::之后
xpath:
//div[@class='abc']//content[包含(text(),\“请填写此字段\”)

您需要

//span[@class="order-num"]/text()

要获取所需值,请尝试对text()使用单引号

//div[@class='abc']//内容[包含(text(),'Please fill this field')]

直接指向内容,如

//content[contains(text(),'Please fill out this field')]

听起来有点奇怪,但是当使用
标记成功时,
text()
函数有时会失败:

let xpath=“//div[@class='abc']//content[包含(,'Please fill this field')”;
如果仍然失败,请确保
class
属性不包含多个值,在这种情况下,还需要在类上使用
contains()

let xpath=“//div[contains(@class,'abc')]//content[contains(,'Please fill this field')”;

根据您共享的HTML,很明显,包含动态元素。因此,要识别文本为的节点,请填写此字段。您可以使用以下任一解决方案:

  • CSS选择器:

  • xpath:


您不应该通过这个://div[@class='abc']/content/text()获取它吗?不,它在运行时失败。与Selenium共享您编写的代码在这个问题中的任何地方都有一个带有类
order num
的元素吗?还是一个
元素?
div.abc content[style]
//div[@class='abc']//content[@style and contains(., 'Please fill out this field')]