使用Cucumber和Selenium测试网站。在我的hooks.js文件中,我有以下内容:
driver.get("https://localhost:8000/");
sleep(2000);
TakeScreenshot('./test_artifacts/img/', 'Load Success', driver);
var btn = this.driver.wait(selenium.until.elementLocated(By.css('#app > div > div > div.col-xs-6.textColumn > button'), seleniumTimeOut));
TakeScreenshot('./test_artifacts/img/', 'Load Success', driver);
this.driver.sleep(3000);
这里的目标是成功加载页面并截取它的截图。该网站正在运行localhost。拍摄屏幕截图时会出现此问题。无论我让司机睡多久,我都会得到一个黑色的截图,告诉我网站没有及时“建立”(根据具体情况使用可能不正确的术语)。然后我得到了这个错误:
Waiting for element to be located By(css selector, #app > div > div > div.col-xs-6.textColumn > button)
Wait timed out after 20112ms
如果我将网址更改为https://google.com/,我会获得该网站的屏幕截图,没问题。有什么想法在这里发生了什么?我的上述假设是否正确? 提前谢谢!
答案 0 :(得分:0)
请尝试等到其他一些元素可用。使用xpath定位器代替CSS。您的机器是否落后于代理?如果手段请在代理后面添加幻像浏览器。
var phantom = require('phantom');
phantom.create(function(browser){
browser.createPage(function(page){
browser.setProxy('98.239.198.83','21320','http', null, null, function(){
page.open(
'http://example.com/req.php', function() {
});});});});
答案 1 :(得分:0)
首先,将驱动程序更改为chrome驱动程序,并在更改URL后查看脚本正在执行的操作。一段时间不同的环境有不同的id和XPath影响脚本。所以在转移到phantomjs之前,首先使用常见的驱动程序(如chrome或firefox)检查脚本的行为。
我经历了同样的情况,我遇到了同样的情况。这是一个愚蠢的错误,浪费了我一半的时间:p
希望它会对你有所帮助:)。
答案 2 :(得分:0)
这个问题似乎是一个认证问题。测试将在http上运行,但是当localhost使用https时,测试将失败。 我通过在hooks.js文件中添加以下内容来解决这个问题.BeforeFreature:
this.driver = new selenium.Builder()
.withCapabilities({'phantomjs.cli.args': ['--ignore-ssl-errors=true']})
.forBrowser('phantomjs')
.build();