【问题标题】:Selenium Test Case does not select first elementSelenium 测试用例不选择第一个元素
【发布时间】:2015-11-18 04:10:16
【问题描述】:

我正在使用带有“SeleniumTestCase”扩展名的 PHPUnit 进行测试。我的问题是以下代码执行良好:

$movies = "//div[@id='sorted_movies_paginator']//li[@class='c-card-list__item']//a[@class='movie-link']";
$this->assertGreaterThanOrEqual(2 , $this->getXpathCount($movies));
echo $this->getXpathCount('('.$movies.')[1]')."\n"; // echoes 1

虽然这个返回错误:

$this->assertElementPresent('('.$movies.')[1]');

错误是:

PHPUnit_Framework_ExpectationFailedException :命令失败: assertElementPresent('(//div[@id='sorted_movies_paginator']//li[@class='c-card-list__item']//a[@class='movie-link'])[1]') 断言 false 为 true 失败。

这个也返回错误:

$this->clickAndWait('('.$movies.')[1]');

错误是:

PHPUnit_Framework_Error : 访问时响应无效 位于“http://localhost:4444/selenium-server/driver/”的 Selenium 服务器: 错误:元素 (//div[@id='sorted_movies_paginator']//li[@class='c-card-list__item']//a[@class='movie-link'])[1] 没找到

如何强制 Selenium Driver 仅断言第一个元素

【问题讨论】:

    标签: selenium phpunit


    【解决方案1】:

    为了进行迭代,您需要知道哪个元素需要迭代。在您的情况下,它看起来将是 <li>

    您正在尝试做(我打破了界限以显示可见性):

    //div[@id='sorted_movies_paginator']
    //li[@class='c-card-list__item']
    //a[@class='movie-link'][1]
    

    你想要的,是

    //div[@id='sorted_movies_paginator']
    //li[@class='c-card-list__item'][1]
    //a[@class='movie-link']
    

    【讨论】:

    • 谢谢,@sircapsalot!使用 //div[@id='sorted_movies_paginator']//li[@class='c-card-list__item'][1]//a[@class='movie-link'] 而不是括号版本就可以了。
    • @nlc2007,如果这回答了您的问题,请继续并单击绿色复选标记将其标记为已接受,以便可以关闭此问题:)
    猜你喜欢
    • 2021-12-08
    • 2015-04-08
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 2018-11-16
    相关资源
    最近更新 更多