我正在运行以下Behat场景:
Then I should see "Testing body" in the "strong" element
以下HTML代码段:
<strong>Testing body</strong>
但是我收到了错误:
在匹配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
答案 0 :(得分:1)
确保使用的选择器是唯一的。
根据使用的方法,您可能需要id | name | label | value或css selector。
我的情况下使用的选择器过于笼统,你需要通过在前面添加一个额外的元素来缩小该部分,以告诉他在较小的部分中搜索。
例如:#myid
strong - &gt;将在具有id myid的元素中搜索强大
对于其他元素也一样,你可以使用ol&gt; li或ul&gt; li,但如果找到更多元素,你需要在前面添加一个额外的选择器来缩小该部分。
始终在浏览器中手动检查CSS并确保其唯一或首先找到您需要的元素。
如果要检查包含某些文本的元素,可以像这样使用XPath:
//strong[contains(text(), 'Testing body')]
如果你能像我上面所说的那样识别这个部分你也可以使用css,但我需要更多来自html,一个大部分以获得更好的选择器。
答案 1 :(得分:1)
以下方法可能有所帮助:
/**
* @Given I should see :text in the :tag element
*/
public function iShouldSeeInTheElement($text, $tag) {
$this->verifyElementByXpath("//${tag}[contains(text(), '${text}')]");
}
您可以使用contains
和starts-with
代替other。
注意:我没有测试过,所以如果你这样做,请提出改进建议。