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

时间:2013-03-11 08:46:05

标签: php selenium phpunit opera selenium-rc

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

代码:

$browser->clickAndWait(link);

这是SELENIUM REMOTE CONTROL的下一步:

click(link)
waitForPageToLoad(120000)

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

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

你知道出了什么问题吗?

4 个答案:

答案 0 :(得分:1)

我在FF中遇到了这个问题,这是我提出的解决方案:

def wait_for_element_by_id(eid):
   "Wait for an element to be present"
   element = WebDriverWait(driver, 10).until(
       EC.presence_of_element_located((By.ID, eid))
   )
   return []

答案 1 :(得分:0)

在原帖中没有足够的信息来提出明确的解决方案,但是与@Andre提供的评论相关,“消毒”浏览器会这样做,反过来提供诸如“复制xPath”之类的功能可以非常误导,并且在测试期间会导致许多问题,具体取决于xPath的结构。

例如:

<html>
    <head></head>
    <body>
        <div>
            <table>
                <tr>
                    <td>test</td>
                </tr>
                <tr>
                    <td>value</td>
                </tr>
            </table>
        </div>
    </body>
</html>

虽然上述代码非常小,但浏览器会将xPath of test报告为以下之一:

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

等等。显然,你没有遇到更多唯一标识符(IE是id - &gt; // * [@ id =“someElement”])而遇到这个问题,但在许多项目中我们已经接管了,单位测试的地方最初只在一个浏览器上完成,我们看到类似于报告的错误,结果发现“消毒”浏览器确实产生了两个问题之一:

  • 在“已清理”的浏览器上检索路径,然后在无法找到该元素的浏览器上运行。
  • 在未经“清理”的浏览器上检索路径,然后在执行清理的浏览器上运行。

这两个问题导致不匹配。

答案 2 :(得分:0)

我有类似的问题,不幸的是,我想出的唯一解决方案是......加入“睡眠”。丑,但有效。

答案 3 :(得分:-1)

点击弹出或创建后,只需点击功能“waitForElementPresent”或“waitForChange”即可调用。

clickAndWait = click()+一些等待函数....好的做法是在点击之前使用等待功能,这样可以节省你的异步调用。

selenium.waitForElementPresent(“myFooElement”);
selenium.click(“myFooElement”);