【发布时间】:2015-03-30 23:47:39
【问题描述】:
我目前在 Python 中通过 PhantomJS + Selenium 运行浏览器测试。
desired_capabilities = dict(DesiredCapabilities.PHANTOMJS)
desired_capabilities["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36")
driver = webdriver.PhantomJS(executable_path="./phantomjs", desired_capabilities=desired_capabilities)
driver.get('http://google.com')
这很好用,除非我尝试get 的页面上有重定向。
例子:
https://login.vrealizeair.vmware.com/
在这种情况下,get 无法正常工作。页面源为空:<html><head></head></body></html>。
这是一个 known issue,其中发布了涉及添加 sn-p 代码以适当处理重定向的解决方案。
如果您使用 Selenium 运行测试(在我的第一个代码 sn-p 中),您如何/在哪里添加此代码?它是desired_capabilties 的一部分吗?
例子:
page.onNavigationRequested = function(url, type, willNavigate, main) {
if (main && url!=myurl) {
myurl = url;
console.log("redirect caught")
page.close()
renderPage(url);
}
};
page.open(url, function(status) {
if (status==="success") {
console.log(myurl);
console.log("success")
page.render('yourscreenshot.png');
phantom.exit(0);
} else {
console.log("failed")
phantom.exit(1);
}
});
我用 PhantomJS 1.9.8 和 2.0.1-development 进行了尝试。
【问题讨论】:
-
你用的是什么版本?也许你需要更新到 PhantomJS 2。
-
我在 1.9.8 和 2.0.1-development 中尝试过。
标签: python selenium-webdriver phantomjs ghostdriver