【发布时间】:2016-03-07 08:59:14
【问题描述】:
我是使用硒的新手。我已经下载了 Selenium 独立服务器并通过键入成功运行它
java -jar selenium-server-standalone-2.14.0.jar
进入命令行。
运行后
phpunit.bat
在命令行中,我的所有测试都将按预期通过,除非我手动最大化在测试过程中自动打开的 Firefox 浏览器窗口。
在测试运行时,当 Firefox 浏览器窗口打开时,如果我在登录测试运行时没有最大化该窗口,那么该测试将失败并以某种方式重定向到我网站上的意外页面。如果我在测试完成之前最大化窗口,“登录”按钮会按预期被点击,正确的页面被加载,测试通过。
因此,我想知道是否有办法更改某处的设置,以便 Firefox 浏览器在测试运行时以最大化打开?
我在谷歌上搜索并发现了一些可能有帮助的各种代码 sn-ps,但我不确定这段代码的 PHP 版本在哪里,或者我正在使用的 Selenium 版本在哪里放置一些类似的代码(Selenium 独立服务器):
# repositioning and resizing browser window:
driver.manage.window.move_to(300, 400)
driver.manage.window.resize_to(500, 800)
driver.manage.window.maximize
或者这是 C#,但我需要 PHP,但不知道在哪里可以找到正确的代码或将它放在哪里:
driver.Manage().Window.Maximize();
这是我的测试/SeleniumTest.php 文件中有关登录 Selenium 测试的代码(使用 Laracasts/Integrated):
<?php
use Laracasts\Integrated\Extensions\Selenium;
use Laracasts\Integrated\Services\Laravel\Application as Laravel;
class SeleniumTest extends Selenium
{
use Laravel;
/**
* Tests to see if the login page loads
*/
public function testToSeeIfLoginLoads()
{
$this->visit('/login')
->see('Login')->see('Email Address')->see('Password')
->type('myemail@email.com', 'email')->type('mypassword', 'password')
->waitForElement('log_in')
->click('log_in')
->waitForElement('table_summary')
->see('Complete Course Summary');
}
【问题讨论】:
-
听起来您以脆弱的方式构建了登录测试,因此窗口内按钮的位置很重要。您应该考虑在 DOM 元素上调用点击事件,而不是依赖点击位置 X,Y。
-
@MikeBrant 这是一个符合问题的逻辑解决方案,但我刚刚更新了上面的问题以包括失败的登录测试。据我所知,无论按钮在页面上的哪个位置,都应该被点击,因为它是由 id "log_in" 引用的
标签: php unit-testing firefox selenium laravel-5.1