PHPUnit的Selenium,在Opera浏览器中clickAndWait()函数无法正常工作

21

我在使用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 上进行了测试。

您有任何想法是出了什么问题吗?


你在 Selenium 的 Bug 追踪器中搜索过了吗? - cweiske
是的,我在Selenium错误跟踪器上搜索了,但没有找到解决我的问题的方法。 - Szymon
链接是否可能绑定了一个在Opera中没有正确处理的Javascript事件?你能否在Opera上手动执行链接点击操作? - Dan Chan
@DanChan,是的,我可以在测试模式Opera中点击此链接,并且在没有Selenium的情况下进行测试时,一切都正常工作。 - Szymon
你是如何定位链接的?使用 CSS 还是 XPath?检查选择器语法是否受 Opera 支持。 - Andre
显示剩余2条评论
4个回答

1

我在Firefox中也遇到了这个问题,这是我想出的解决方案:

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 []

0

我曾经遇到过类似的问题,不幸的是,我唯一想到的解决方法就是...添加“sleep”函数。很丑陋,但却有效。


0

原始帖子中没有足够的信息来建议一个明确的解决方案,但与@Andre提供的评论相结合,"清理"浏览器所做的事情,以及随之提供的函数,如"复制xPath"可能会非常误导,并在测试过程中导致许多问题,这取决于xPath的结构。

例如:

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

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

  • /html/body/div/table/tr/td(在许多情况下,这将返回test和value)
  • /html/body/div/table/tr[1]/td[1](更精确地匹配test)
  • /html/body/div/table/tbody/tr/td(请注意添加的tbody)

等等。显然,如果有更独特的标识符可用(例如id-> //*[@id="someElement"]),则不会遇到此问题,但在许多我们接手的项目中,最初只在一个浏览器上进行单元测试,我们看到了类似于所报告的错误,并且结果是“净化”浏览器会产生两个问题之一:

  • 该路径是在“净化”浏览器上检索的,然后在无法净化的浏览器上运行,因此找不到该元素。
  • 该路径是在未经“净化”的浏览器上检索的,然后在进行净化的浏览器上运行。

这两个问题都导致无法匹配。


-1

在点击某个弹出窗口或创建后,您只需要调用“waitForElementPresent”或“waitForChange”函数的单击后函数。

clickAndWait = click() + 一些等待函数... 好的实践是在单击之前使用等待函数,这可以在异步调用中为您节省时间。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接