Mink selenium2驱动程序无法正常工作

时间:2017-10-13 10:32:31

标签: php testing selenium-webdriver mink goutte

当我使用mink selenium2驱动程序时,我无法遍历该页面。例如,这段代码(以及任何其他find *函数)给出了一条错误消息:

  

PHP致命错误:在...中调用null成员函数getOuterHtml()

public function test() 
{
    $this->seleniumSession->visit($this->websiteAddress);

    $page = $this->seleniumSession->getPage();

    echo $page->findById('feedback_button')->getOuterHtml();
}

另一方面,当我在同一块代码中使用Goutte驱动程序会话时,我得到了HTML。 (没有错误信息)

这就是我创建Selenium2Driver的方式:

    $this->seleniumDriver = new Selenium2Driver('firefox', array(
        'browserName'       => 'firefox',
        'version'           => '',
        'platform'          => 'ANY',
        'browserVersion'    => '56.0',
        'browser'           => 'firefox',
        'name'              => 'Behat Test',
        'deviceOrientation' => 'portrait',
        'deviceType'        => 'tablet',
        'selenium-version'  => '3.6.0'
    ), 'http://localhost:4444/wd/hub');

我使用的是selenium独立服务器,版本3.6.0。我还注意到,使用Selenium2驱动程序的echo $page->getContent();比使用Goutte驱动程序(一些不在真实网页源中的其他脚本块)提供了更多HTML。

1 个答案:

答案 0 :(得分:1)

Goutte 支持JavaScript,响应将包含整个页面。

Selenium2Driver 支持JavaScript,您需要等待页面加载,因为某些元素可能稍后可用,对JS的支持可能是您获得更多内容的原因代码。

您应该避免使用此$page->findById('feedback_button')->getOuterHtml();之类的调用,因为如果找不到该元素,findById方法将返回null并且在null上调用方法将导致PHP Fatal error }

你需要确保元素是可见的,实现一个等待它的方法,或者只是如果find方法返回null抛出一些异常,否则做你必须做的事情。