我在使用Codeception + WebDriver + Selenium + Firefox进行测试时遇到了很多问题,因此我决定从变量中删除Codeception,并使用php_webdriver直接进行一些测试,以发现问题不在Codeception中。
我尝试使用3种不同的方法转到页面:
// Click a link
$driver->findElement(WebDriverBy::id('inbox-navigation'))->click();
// Directly go to the address via URL
$driver->get('http://testing.mysite.net/#/messages');
// Click via javascript
$driver->executeScript("jQuery('#inbox-navigation').click();");
当然,它们都不起作用,在我的浏览器中手动操作它可以正常工作。链接显示为单击,网址更改,但相关页面(通过ajax加载)永远不会被加载。
这是我用来测试它的完整源代码:
<?php
require __DIR__."/vendor/autoload.php";
$host = 'http://localhost:4444/wd/hub';
$driver = RemoteWebDriver::create($host, DesiredCapabilities::firefox());
$driver->manage()->window()->setSize(new \WebDriverDimension(1280, 720));
$driver->get('http://testing.mysite.net/');
$driver->findElement(WebDriverBy::id('email'))->sendKeys('john@doe.com');
$driver->findElement(WebDriverBy::id('password'))->sendKeys('secret');
$driver->findElement(WebDriverBy::id('sign-in-button'))->click();
$driver->wait(10)->until(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::id('inbox-navigation')));
$driver->findElement(WebDriverBy::id('inbox-navigation'))->click();
sleep(15); /// to make sure it wasn't too fast
$driver->takeScreenshot('screen.png');
var_dump($driver->getCurrentURL());
这是更改为收件箱的链接:
此外,在控制台中手动执行jQuery('#inbox-navigation').click();
也可以正常工作。