PHPUnit Selenium,clickAndWait()函数在Opera中不起作用

Szy*_*mon 21 php opera selenium phpunit selenium-rc

PHPUnit_Selenium在Opera中遇到问题.如果我在测试代码中单击了元素,则不会加载页面.在其他浏览器中,如Firefox,IE,Chrome和Safari,它可以正常工作.

码:

$browser->clickAndWait(link);
Run Code Online (Sandbox Code Playgroud)

它是SELENIUM REMOTE CONTROL的下一步:

click(link)
waitForPageToLoad(120000)
Run Code Online (Sandbox Code Playgroud)

超时后,如果我点击浏览器中的链接,则重新加载页面.

我有Selenium RC v.2.31.0和Opera版本12.41,但我也测试了Opera 11.50.

你知道什么是错的吗?

con*_*781 0

原始帖子中没有足够的信息来提出明确的解决方案,但是结合 @Andre 提供的评论,“清理”浏览器会执行此操作,并反过来提供“复制 xPath”等功能,可能会非常具有误导性,并在测试过程中导致许多问题,具体取决于 xPath 的结构。

例如:

<html>
    <head></head>
    <body>
        <div>
            <table>
                <tr>
                    <td>test</td>
                </tr>
                <tr>
                    <td>value</td>
                </tr>
            </table>
        </div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

虽然上面的代码非常少,但浏览器会将测试的 xPath 报告为以下之一:

  • /html/body/div/table/tr/td (在许多情况下会返回测试和值)
  • /html/body/div/table/tr[1]/td[1] (更精确的匹配来测试)
  • /html/body/div/table/tbody/tr/td (注意添加的 tbody )

等等。显然,使用更唯一的标识符(即 id -> //*[@id="someElement"] )就不会遇到这个问题,但在我们接管的许多项目中,单元测试是最初只在一种浏览器上完成,我们看到了与报告的错误类似的错误,结果证明“清理”浏览器确实会产生以下两个问题之一:

  • 该路径是在“清理”的浏览器上检索的,然后在不会也无法找到该元素的浏览器上运行。
  • 该路径是在未“清理”的浏览器上检索的,然后在进行清理的浏览器上运行。

这两个问题都会导致不匹配。