GEB + jQuery:包含抛出org.openqa.selenium.InvalidSelectorException

时间:2018-07-18 09:37:25

标签: jquery jquery-selectors geb

我是GEB的新手,正在使用jQuery。

我正在尝试选择或查找某个元素的子级是否具有特定文本的更深n级。

我正在尝试使用contains选择器,但没有按预期运行。

简单的例子:

...
<div class="widget-header-title">My Tasks</div>
...

我正在尝试执行此选择器

$('div:contains("My Tasks")')

但我遇到一个例外:

Method threw 'org.openqa.selenium.InvalidSelectorException' exception.

我真正需要做的是检查另一个子元素是否包含文本

<div id="taskLegend">
  <div>
      ....
      <text ....>Call</text>
      ....
  </div>
</div>

我尝试了这个选择器,并且在上面遇到了同样的异常

$("#taskLegend").find("text:contains('Call')")

但使用

$("#taskLegend").find("text")

它返回taskLegend内部的所有元素“文本”

看起来像是无法使用的容器。

有人可以发现我在做什么错吗?

非常感谢您

2 个答案:

答案 0 :(得分:2)

不是第一个答案是错误的,但是另一种方法是通过将Text( "Hello", style: TextStyle(background: Paint()..color = Colors.red), ), 对象传递给您的Jquery闭包https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/By.html

所以对我个人而言,我可能会使用xpath(尽管请注意,xpath从技术上讲是最慢的)

所以它看起来像这样:

By

这将返回所有包含文本“我的任务”的div

答案 1 :(得分:1)

引号用于元素及其标签(例如“ h1.class”)

如果您希望使用text进行搜索:包含必须采用以下格式:

$("#taskLegend").find("text", text:contains("Call"))

在您的情况下,“文字”一词​​有2个含义;一个文本元素本身和一个元素的文本