2015-12-02 3 views
0

Я новичок в использовании селена. Я загрузил автономный сервер Selenium и успешно получил его, набравРазмер окна браузера Selenium

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(); 

Вот код для входа в тест Selenium, о котором идет речь (с использованием Laracasts/Integrated) из моих тестов/SeleniumT est.php file:

<?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 Это логическое решение, которое соответствует этой проблеме, но я только что обновил свой вопрос выше, чтобы включить тест входа, который терпит неудачу.Насколько я могу судить, кнопку нужно нажимать независимо от того, где она находится на странице, так как на нее ссылается идентификатор «log_in» – user3089840

ответ

4

Я не использую Laravel, я использую классический PHPUnit + Selenium RC и/или WebDriver и это работает для меня на обоих реализациях, сразу после открытия URL, если я только хочу, чтобы это для конкретного тест:

$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

Полагая это в тестах/SeleniumTest.php ничего не делает. Может быть, есть другой подобный метод? – user3089840

+0

Я думаю, что проблема с этим решением заключается в том, что он не распространяется Laracasts/Integrated, но, вероятно, что-то вроде Selenium2TestCase – user3089840

Смежные вопросы