如何根据 Behat 中的文本 select HTML 标签中的元素?
How to select the element in HTML tags based on its text in Behat?
我是运行以下行为场景:
Then I should see "Testing body" in the "strong" element
对于以下 HTML 片段:
<strong>Testing body</strong>
但是我得到一个错误:
The text "Testing body" was not found in the text of the element matching css "strong"
检查元素是否包含以下标签的最佳方法是什么?
<em>Testing body</em>
<ol><li>Testing body</li>
</ol>
<ul><li>Testing body</li>
</ul>
我正在尝试使用 wysiwyg.feature
语法:
Then I should see "Testing body" in the "<Element>" element with the "<Property>" CSS property set to "<Value>" in the "Pearson Content" region
确保使用的选择器是唯一的。
根据使用的方法,您可能需要 id|name|label|value 或 css 选择器。
我的情况是你使用的选择器太笼统了,你需要通过在这个前面添加一个额外的元素来缩小部分,告诉他在较小的部分中搜索。
例如:#myid
strong -> 将在 id 为 myid
的元素中搜索 strong
其他元素也是如此,您可以使用 ol>li 或 ul>li,但如果找到更多元素,您将需要在前面添加一个额外的选择器以缩小该部分。
始终在浏览器中手动检查 CSS 并确保它是唯一的或首先找到您需要的元素。
如果要检查包含某些文本的元素,可以像这样使用 XPath:
//strong[contains(text(), 'Testing body')]
如果你能像我上面说的那样识别这个部分,你也可以使用css,但我需要更多html,一个大的部分以获得更好的选择器。
以下方法可能有所帮助:
/**
* @Given I should see :text in the :tag element
*/
public function iShouldSeeInTheElement($text, $tag) {
$this->verifyElementByXpath("//${tag}[contains(text(), '${text}')]");
}
而不是 contains
, you can also use starts-with
and other。
注意:我还没有测试过,所以如果你这样做了,请提出改进建议。
我是运行以下行为场景:
Then I should see "Testing body" in the "strong" element
对于以下 HTML 片段:
<strong>Testing body</strong>
但是我得到一个错误:
The text "Testing body" was not found in the text of the element matching css "strong"
检查元素是否包含以下标签的最佳方法是什么?
<em>Testing body</em>
<ol><li>Testing body</li>
</ol>
<ul><li>Testing body</li>
</ul>
我正在尝试使用 wysiwyg.feature
语法:
Then I should see "Testing body" in the "<Element>" element with the "<Property>" CSS property set to "<Value>" in the "Pearson Content" region
确保使用的选择器是唯一的。
根据使用的方法,您可能需要 id|name|label|value 或 css 选择器。
我的情况是你使用的选择器太笼统了,你需要通过在这个前面添加一个额外的元素来缩小部分,告诉他在较小的部分中搜索。
例如:#myid
strong -> 将在 id 为 myid
其他元素也是如此,您可以使用 ol>li 或 ul>li,但如果找到更多元素,您将需要在前面添加一个额外的选择器以缩小该部分。
始终在浏览器中手动检查 CSS 并确保它是唯一的或首先找到您需要的元素。
如果要检查包含某些文本的元素,可以像这样使用 XPath:
//strong[contains(text(), 'Testing body')]
如果你能像我上面说的那样识别这个部分,你也可以使用css,但我需要更多html,一个大的部分以获得更好的选择器。
以下方法可能有所帮助:
/**
* @Given I should see :text in the :tag element
*/
public function iShouldSeeInTheElement($text, $tag) {
$this->verifyElementByXpath("//${tag}[contains(text(), '${text}')]");
}
而不是 contains
, you can also use starts-with
and other。
注意:我还没有测试过,所以如果你这样做了,请提出改进建议。