Jquery mobile 如何使用Selenium WebDriver测试jQuery Mobile changePage

Jquery mobile 如何使用Selenium WebDriver测试jQuery Mobile changePage,jquery-mobile,selenium-webdriver,Jquery Mobile,Selenium Webdriver,我想用SeleniumWebDriver测试带有一些changePage()语句的jQuery移动网站。如果我用Selenium IDE录制并播放这些动作,效果会很好。但是如果我对WebDriver执行相同的操作,则changePage()似乎会被忽略 让我用这个小例子来描述它。让我们假设我有一个像 其中id为“changePageButton”的按钮应移动到另一页 因此,对于WebDriver的测试,我使用以下代码: driver.findElement(By.id("changePageB

我想用SeleniumWebDriver测试带有一些changePage()语句的jQuery移动网站。如果我用Selenium IDE录制并播放这些动作,效果会很好。但是如果我对WebDriver执行相同的操作,则changePage()似乎会被忽略

让我用这个小例子来描述它。让我们假设我有一个像

其中id为“changePageButton”的按钮应移动到另一页

因此,对于WebDriver的测试,我使用以下代码:

driver.findElement(By.id("changePageButton")).click();
但是页面没有改变,相反,模拟的点击似乎只是重新加载页面。有人用WebDriver或idea成功测试过changePages吗


关于

我假设您已经从Selenium IDE导出了测试用例。在这种情况下,Selenium产生了如下方法:

@Test
  public void test() throws Exception {
    driver.get(baseUrl + "/test.html");
  }
但是baseUrl以斜杠结尾,test.html以斜杠开头,所以完整的URL中有两个斜杠。在jqueryMobile代码中,方法isEmbeddedPage()中有一个条件检查,它比较web哈希地址并找到差异,然后返回到全局页面,而不是更改到页面2。这就是为什么几乎所有的东西都能工作,但由于这个特殊的检查,changePage不能工作

因此,如果在test.html之前删除斜杠,它应该可以工作

我想这是Selenium的导出功能中的一个错误


问候

您是在运行WebDriver命令之前等待页面和JS库加载,还是在调用
get(url)
之后直接加载?您好,Andrew。我已经用driver.get(theUrl)调用了这个页面,下一个命令是driver-click命令。这是错的吗?但我发现,几乎所有绑定到按钮的功能都能正常工作。但是,如果函数执行更改页面,则会失败,例如((JavascriptExecutor)driver).executeScript(“myfunction();”);只要myfunction()不执行$.mobile.changePage(“#page2”);如果在单击之前添加延迟,是否有效?尝试5秒,我们可以从那里巧妙。不,不幸的是,这没有帮助。如果myfunction()包含三个命令:1。警报(“1”),2。第3页。alert(“2)然后显示alert 1,changePage似乎只重新加载整个页面并再次显示第1页,然后显示alert 2。我不会按照alert()路线进行调试,更喜欢
console.log()
如果必须的话。可能有95%的人认为这可能是一个时间问题,所以请先尝试使用延迟来排除这一点。如果这真的更复杂,那么跟踪日志会很方便。您好,谢谢,这正是问题所在!在Selenium中生成链接可能很难看,但它仍然是一个有效的URL,对吗这不是一个应该在jQueryMobile中解决的问题吗?