使用量角器网络驱动程序进行 Safari 历史记录导航的未知错误
Unknown Error on Safari history Navigation using Protractor -webdrivers
我试图使用多个浏览器作为测试来测试历史记录和后退按钮,但会抛出此错误:
UnknownError: Yikes! Safari history navigation does not work. We can go forward or back, but once we do, we can no longer communicate with the page... (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 19 milliseconds
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'SFM1SKF1G3L.local', ip: '10.16.100.172', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9.3', java.version: '1.8.0_05'
Driver info: org.openqa.selenium.safari.SafariDriver
Capabilities [{browserName=safari, takesScreenshot=true, javascriptEnabled=true, version=7.0.3, cssSelectorsEnabled=true, platform=MAC, secureSsl=true}]
Session ID: null
此测试适用于Chrome和Firefox,但不适用于safari:
it("should open find a clinic page", function(){
browser.driver.sleep(2000);
browser.ignoreSynchronization = true;
var string = 'clinic';
var main = '.search-large-text';
var link = element(by.cssContainingText('.submenu li a', string));
expect(link.getText()).toEqual(string);
link.click().then(function() {
browser.driver.sleep(3000);
var title = element(by.cssContainingText(main, string));
expect(title.getText()).toBe(string);
});
browser.navigate().back().then(function(){
browser.driver.sleep(3000);
expect(browser.driver.getTitle()).toBe('Target : Expect More Pay Less')
})
});
这是 safari Selenium Webdriver 中的一个开放问题(自 2012 年 4 月以来):
- [SafariDriver] 无法在浏览器历史记录中向前或向后导航。
而且,正如您在源代码中看到的那样,有一个硬编码的存根不允许浏览浏览器的历史记录(back()
正在这样做):
/**
* Stub that reports an error that navigating through the browser history does
* not work for the SafariDriver.
*/
safaridriver.inject.commands.unsupportedHistoryNavigation = function() {
throw Error('Yikes! Safari history navigation does not work. We can ' +
'go forward or back, but once we do, we can no longer ' +
'communicate with the page...');
};
这是非常明显的解决方法,但可能对未来的读者有用:
var prevUrl = browser.getCurrentUrl();
link.click().then(function() {
browser.driver.sleep(3000);
var title = element(by.cssContainingText(main, string));
expect(title.getText()).toBe(string);
});
browser.navigate().to(prevUrl).then(function(){
browser.driver.sleep(3000);
expect(browser.driver.getTitle()).toBe('Target : Expect More Pay Less')
});
相关文章:
- window.location替换并传递URL历史记录条目中的变量
- Javascript历史记录转换为php行
- 浏览器何时记录历史记录
- 输入类型按钮返回历史记录并返回顶部
- HTML5历史记录-返回上一个完整页面按钮
- Angular JS-如何强制浏览器记录历史以便快速路由
- asp.net网站文件下载历史记录
- 使用Ajax的后退按钮历史记录,URL中没有散列
- 历史记录和通过JavaScript修改的HTML
- Javascript:历史记录未加载页面
- 通过js设置页面历史记录和页面内容
- 如果没有历史记录,我如何隐藏图像或按钮onclick=;历史.go(-1);
- 将HTML表单发布到iframe会导致浏览器历史记录出现问题
- 如何防止浏览器在历史记录中缓存HTML
- 如何将新的stateObject添加或附加到历史记录中
- 检查浏览器后退按钮历史记录
- React-router 在添加历史记录后不会渲染组件
- 如何返回可用的历史记录状态数
- 引导选项卡不适用于历史记录.返回选项
- 非用户发起的操作触发的导航没有记录历史