我在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上测试。
你知道出了什么问题吗?
答案 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报告为以下之一:
等等。显然,你没有遇到更多唯一标识符(IE是id - &gt; // * [@ id =“someElement”])而遇到这个问题,但在许多项目中我们已经接管了,单位测试的地方最初只在一个浏览器上完成,我们看到类似于报告的错误,结果发现“消毒”浏览器确实产生了两个问题之一:
这两个问题导致不匹配。
答案 2 :(得分:0)
我有类似的问题,不幸的是,我想出的唯一解决方案是......加入“睡眠”。丑,但有效。
答案 3 :(得分:-1)
点击弹出或创建后,只需点击功能“waitForElementPresent”或“waitForChange”即可调用。
clickAndWait = click()+一些等待函数....好的做法是在点击之前使用等待功能,这样可以节省你的异步调用。
selenium.waitForElementPresent(“myFooElement”);
selenium.click(“myFooElement”);