我正在尝试使用PHPUnit_Extensions_Selenium2TestCase
编写一些e2e测试,但它不断抛出以下异常:
InvalidArgumentException: Element not found.
显然,我检查了页面signup_page.php
,并且所有HTML元素都在那里,并且正在发送的表单的行为也有效(它在提交时会打印出“成功”消息)。它显然找不到页面上的任何元素,但对于我的生活,我无法弄清楚为什么。
以下是测试代码:
$this->url("signup_page.php");
$this->byName("username")->value(self::USERNAME);
$this->byName("email")->value(self::EMAIL);
$this->byName("password")->value(self::PASSWORD);
$this->byTag("form")->submit();
$this->assertRegExp("/success/", $this->byTag("body")->text());
我可以看到浏览器被定向到页面,但随后抛出异常,它会突然死亡。
以下是php页面以防万一:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title></title>
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.3.0/pure-min.css">
<link rel="stylesheet" href="css/base.css">
</head>
<body>
<form action="signup.php" method="get" class="pure-form pure-form-stacked">
<fieldset>
<legend>Signup</legend>
<label for="username">username</label>
<input type="text" name="username" id="username" />
<label for="email">email</label>
<input type="text" name="email" id="email" />
<label for="password">password</label>
<input type="password" name="password" id="password" />
<input type="submit" name="submit" value="signup" class="pure-button pure-button-primary" />
</fieldset>
</form>
</body>
</html>
答案 0 :(得分:1)
phpunit-selenium与selenium 3 + geckodriver + firefox不完全兼容。
请参见https://github.com/giorgiosironi/phpunit-selenium/issues/427,了解有关代码更改的信息,以提高兼容性(并解决特定的“ InvalidArgumentException:找不到元素”问题)
答案 1 :(得分:-1)
我遇到了同样的问题。我用chrome替换了驱动程序而不是FF
...
protected function setUp()
{
$this->setBrowser('chrome');
$this->setBrowserUrl($this->host);
}
...