2015-12-02 151 views
0

我是使用硒的新手。我已经下载了Selenium Standalone Server,并成功通过输入硒浏览器窗口大小

java -jar selenium-server-standalone-2.14.0.jar 

进入命令行。

运行

phpunit.bat 

命令行,毕竟我的测试将通过如预期,除了一,除非我手动最大化是自动在测试过程中打开Firefox浏览器窗口。

虽然测试运行,Firefox浏览器窗口打开时,如果我的登录测试运行时,我没有最大化窗口,那么该测试将失败并以某种方式重定向到意想不到的网页上我的网站。如果我在测试完成之前最大化窗口,那么按照预期点击“登录”按钮,加载正确的页面,并通过测试。

因此,我想知道是否有办法改变的地方,这样Firefox浏览器将只开放测试期间,运行最大化的设置?

我搜索了一下,发现了一些可能有所帮助的代码片段,但我不确定这个代码的PHP版本在哪里,或者在哪里为我使用的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(); 

这里是从我的测试/ SeleniumT登录Selenium测试代码(使用Laracasts/Integrated) est.php文件:

<?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('[email protected]', 'email')->type('mypassword', 'password') 
      ->waitForElement('log_in') 
      ->click('log_in') 
      ->waitForElement('table_summary') 
      ->see('Complete Course Summary'); 
    } 
+0

这听起来像你建立你的脆弱的登录测试,使窗口内的按钮的位置很重要。您应该考虑在DOM元素上调用点击事件,而不是依赖点击位置X,Y。 –

+0

@MikeBrant这是一个符合问题的逻辑解决方案,但我只是更新了上面的问题,以包含失败的登录测试。据我所知,按钮应该被点击,不管它在页面上的什么位置,因为它被id“log_in”引用。 – user3089840

回答

4

我不使用Laravel,我使用的是经典的PHPUnit +硒RC和/或webdriver的,这对我的作品上都实现,打开网址后正确的,如果我只想要这个特定测试:

$this->open("/"); 
$this->getEval("window.resizeTo(1225, 996); window.moveTo(0,200);"); 
//or $this->windowMaximize(); 

或Facebook的的webdriver:

$this->driver->get('myurl/'); 
$this->driver->manage()->window()->setSize(new WebDriverDimension(1225, 996)); 

如果你想为所有的测试,你应该找到设置方法,并把它放在那里。在你的情况下,对于一个特定的测试,this should work:在使用

$this->visit('/') 
->session->window($this->session->window_handle()) 
->postSize(['height' => 996, 'width' => 1225]); 

更多信息,here

+0

这可能需要一些时间来研究这一点,但谢谢你的答案。它看起来很有前途:) – user3089840

+0

WebDriverDimension来自哪个命名空间? –

2

你试过重写setUpPage函数吗?

public function setUpPage() 
    { 
     $this->currentWindow()->maximize(); 
    } 
+0

把它放在tests/SeleniumTest.php中什么也不做。也许有不同的类似方法? – user3089840

+0

我认为这个解决方案的问题在于它没有扩展Laracasts/Integrated,但可能像Selenium2TestCase – user3089840