PhantomJS无法访问自签名HTTPS页面Codeception

时间:2016-03-08 09:42:27

标签: selenium ssl phantomjs codeception

我目前正在使用以下工具进行验收测试:

  • Codeception
  • Selenium Webdriver
  • PhantomJS (作为无头浏览器幽灵)

我的问题是访问自签名(https)页面时我的测试失败

我尝试过的事情:

  1. phantomjs --webdriver=5555 --ignore-ssl-errors=true --ssl-protocol=any
  2. 在我的acceptance.suit.yml
  3. 中的功能phantomjs.cli.args: ["--ignore-ssl-errors=true"]中添加此功能

    到目前为止,这些选项并没有给我带来任何好运。

    这是我的acceptance.suit.yml文件

    class_name: AcceptanceTester
    modules:
        enabled:
            - WebDriver
        config:
            WebDriver:
                url: https://myproject.com
                browser: firefox
                capabilities:
                    unexpectedAlertBehaviour: 'accept'
    
    env:
        phantom:
            modules:
                enabled:
                    - WebDriver
                config:
                    WebDriver:
                        url: https://myproject.com
                        http_proxy: 192.1.1.1
                        http_proxy_port: 3000
                        browser: phantomjs
                        capabilities:
                            phantomjs.cli.args: ["--ignore-ssl-errors=true"]
    

    更新

    此错误显示[ModuleException] WebDriver: Current url is blank, no page was opened

    我不知道为什么会发生此错误,因为我已经指出了一个页面。这是我的测试样本

    public function tryToTestThis(AcceptanceTester $I)
    {
        $I->wantTo('Test this function');
        $I->amOnPage('/mypage/');
        $I->see('This text');
    }
    

    Codeception中的答案更可取。感谢

1 个答案:

答案 0 :(得分:1)

我们想出了这个问题的原因。这是因为我同时在运行SeleniumphantomJS。 (我从一些教程中得到了这个想法。)

我在做

java -jar selenium.jar

然后我这样做,因为它导致在端口4444运行phantomjs时出错(显然selenium正在使用它)我使用端口5555代替。

phantomjs --webdriver=5555 --ignore-ssl-errors=true --ssl-protocol=any

注意:如果不涉及https / ssl自签名页面,一切正常。

我们认为codeception优先考虑端口4444并忽略我的幻像中指示的任何选项,即--ignore-ssl-errors=true --ssl-protocol=any这就是为什么无法访问https /自签名页面。

所以基本上,修复只是在没有硒的情况下单独运行phantomjs。

phantomjs --webdriver=4444 --ignore-ssl-errors=true --ssl-protocol=any

谢谢