Firefox Selenium:如何确保back()导航在不同站点上按预期工作?

Firefox Selenium:如何确保back()导航在不同站点上按预期工作?,firefox,post,selenium,get,browser-history,Firefox,Post,Selenium,Get,Browser History,所以我关心的是 webdriver.navigate().back(); 特别是。读后 这让我想到了如何确保后退按钮的行为符合预期 这里有几种不同的“返回”导航方式。您将如何检测使用哪种方法?倾听是否正在进行POST或GET?倾听AJAX请求并制定适当的计划 a) navigate back() (essentially hitting back button in firefox) b) make GET request to the previous page url c) click o

所以我关心的是

webdriver.navigate().back();
特别是。读后

这让我想到了如何确保后退按钮的行为符合预期

这里有几种不同的“返回”导航方式。您将如何检测使用哪种方法?倾听是否正在进行POST或GET?倾听AJAX请求并制定适当的计划

a) navigate back() (essentially hitting back button in firefox)
b) make GET request to the previous page url
c) click on "return to results" on current page
使用a)
back()
有时对于没有面包屑的AJAX站点无法正常工作。或用于POST搜索结果,例如,按下“上一步”将提示警告消息

对于b)我担心的是url可能不匹配

ex)具有唯一哈希sessionid参数的动态URL


那么,我如何建立应急机制,以确保各种web应用程序和网站的反向导航都能正常工作(在“后退”按钮的行为方面存在很多变化)。

为什么不存储要验证的页面位置,点击链接,使用goBack,然后验证检查变量的位置(存储的变量和验证页面的位置)


顺便说一下,如果您的站点使用AJAX,我建议您使用等待AJAX库的暂停函数。要完全加载,或设置站点的速度(在极少数情况下可能将它们组合在一起)。

您认为这会保持一致吗?我担心的是,如上所述,会话id或一些随机的uri参数可能不匹配……但也许我有点偏执,因为我的意思是,对于我刚刚访问的页面,sessionid之类的内容不应该改变太多,对吧?还有,对于通过POST到达的页面呢。如果你担心会话id,你可以构建自己的验证:存储站点的基本地址(打开后,您可以将地址存储到变量),关于会话,您需要了解如何获取它:从站点中的元素(可能是元标记,我不知道)。通过post到达的页面是什么?例如,搜索查询执行post请求,结果将是。URL相同,但页面完全不同。当您单击一个链接,然后返回()时,会发生什么情况?对于POST请求,“后退”按钮的行为如何?有时候你不能回头。selenium就是我们用浏览器做的事情。你有没有在谷歌上搜索过一些东西,然后单击“上一步”——我们会返回到最后一页,除非有JS把它搞砸了。表单的主要问题是,当我们发送数据时,网站没有将我们移动到其他页面,我们刷新页面,因为浏览器保存了发布数据,所以我们收到了警报。您需要检查您的站点在正常工作时的行为,然后编写selenium测试。对于搜索测试:我会通过检查返回的搜索结果是否包含我的搜索关键字来检查我的搜索是否正常工作。