如何使用XPath获取特定表单元格中的值

时间:2015-10-28 15:11:47

标签: selenium xpath behat acceptance-testing gherkin

我正在学习如何使用Behat / Mink和Selenium编写验收测试,我需要验证特定表格单元格的值。我发现我必须使用xpath来执行此操作,但我无法弄清楚确切的语法。表格如下:

enter image description here

html:

Then I should see "No" in the "???" "css_element"

我想写的声明是:

title="'. $title .'"

我应该如何编写该声明,以便在“No”部分的“Inscriçãoempáriosgrupos”下指定我想要的第一个“No”。

编辑:我最初犯了一个错误,我应该使用“xpath_element”作为选择器,而不是“css_element”

2 个答案:

答案 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吗?对我来说似乎更直截了当。