我正在学习如何使用Behat / Mink和Selenium编写验收测试,我需要验证特定表格单元格的值。我发现我必须使用xpath来执行此操作,但我无法弄清楚确切的语法。表格如下:
html:
Then I should see "No" in the "???" "css_element"
我想写的声明是:
title="'. $title .'"
我应该如何编写该声明,以便在“No”部分的“Inscriçãoempáriosgrupos”下指定我想要的第一个“No”。
编辑:我最初犯了一个错误,我应该使用“xpath_element”作为选择器,而不是“css_element”答案 0 :(得分:2)
我假设Inscrição em vários grupos
文本总是出现在第4列。为此编写XPath非常简单,因为我们可以直接使用索引。
//table[@id='relationships']/tbody/tr[1]/td[4]
如果标题列的列号不同,则必须找到Inscrição em vários grupos
标题的索引(列号),然后使用它来查找相应的值列。
-- the below code will get you the index of the heading column
count(//thead//tr/th[.='Inscrição em vários grupo']/preceding-sibling::*)+1
-- use this index to find the corresponding value
//table[@id='relationships']/tbody/tr[1]/td[count(//thead//tr/th[.='Inscrição em vários grupo']/preceding-sibling::*)+1]
注意:索引从1开始而不是0
从以下链接中,behat中的语法如下所示:
How to assert that a text only exists 1 time in Mink
https://stackoverflow.com/questions/32202047/could-not-find-element-with-xpath-in-behat-mink
$session = $this->getMainContext()->getSession();
$element = $session->getPage()->find(
'xpath',
$session->getSelectorsHandler()->selectorToXpath('xpath', '//table[@id='relationships']/tbody/tr[1]/td[4]');
$elementText = $element->getText();
if ($elementText != 'no') {
throw new Exception('Value us not correct');
}
答案 1 :(得分:0)
我知道你已经接受了答案,但是你尝试了一个简单的CSS选择器,如td.c3
吗?对我来说似乎更直截了当。