selenium-webdriver - Behat,PhantomJS - 单击链接后等待页面加载?

标签 selenium-webdriver phantomjs behat ghostdriver

我正在使用 Behat 3 和 PhantomJS 2。目前我有一个这样定义的场景:

@javascript
Scenario: I visit the blog through the Blog & Events menu.
  Given I am an anonymous user
  And I am on the homepage
  And I follow "Link Text"
  Then I should be on "/path-to-page"

当我用 Goutte 运行它时,一切正常。当我使用 vanilla Selenium 运行它时,它很好(它启动了一个我可以看到的浏览器)。但是,当我配置 Selenium 将 webdriver 主机指向 PhantomJS 时,它在 上爆炸然后我应该在“/path-to-page” 上声称它仍在 / 上。

如果我添加以下等待步骤:

@javascript
Scenario: I visit the blog through the Blog & Events menu.
  Given I am an anonymous user
  And I am on the homepage
  And I follow "Link Text"
  And I wait 4 seconds
  Then I should be on "/path-to-page"

然后我的场景顺利通过,一切顺利。

有没有办法让 PhantomJS 在检查当前路径之前等待页面加载?我不想依赖任意超时。我需要一个 headless 解决方案并且 PhantomJS 似乎得到了很好的支持,但是如果我不能做一些简单的事情,比如单击链接并验证加载的页面而不在任何地方添加随机等待步骤,我可能需要重新评估我的决定。

最佳答案

尝试在您的功能上下文中使用这种隐式等待。根据我的经验,它有所帮助。

/**
 * @BeforeStep
 */
public function implicitlyWait($event)
{
    // Set up implicit timeouts
    $driver = $this->getSession()->getDriver()->getWebDriverSession();
    $driver->timeouts()->implicit_wait(array("ms" => 10000));
}

关于selenium-webdriver - Behat,PhantomJS - 单击链接后等待页面加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705253/

相关文章:

java - 我应该如何最好地与 Selenium Java Webdriver 中的 this <li> 进行交互

python - 在 Python 中使用 Selenium 滚动模态窗口

javascript - 从 phantomjs 沙盒环境中写入文件系统

python - 目录中没有该文件

java - Selenium 自动化不适用于弹出窗口

javascript - 在 Windows 上使用 PhantomJS 时 WebdriverJS 测试挂起

javascript - 在 Angular 7 中测试 PhantomJS Array.prototype.includes()

php - 如何让 Mink Selenium 2 Driver 等待页面加载 Behat

laravel - Behat 在 Laravel 5 中读取默认 .env 文件而不是 .env.behat

session-cookies - 如何重新启动浏览器以保留 Behat 中的 cookie?