2015-12-02 192 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