Selenium Webdriver Black截图PhantomJS

时间:2017-08-01 11:10:28

标签: javascript selenium webdriver cucumber

使用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/,我会获得该网站的屏幕截图,没问题。有什么想法在这里发生了什么?我的上述假设是否正确? 提前谢谢!

3 个答案:

答案 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();