Задать вопрос

PHPUnit + Selenium: В рамках одного теста пройти по нескольким сайтам

Нужно для осуществления тест пройтись по нескольким сайтам, допустим сайты социальных сетей, и отключить в тестовых аккаунтах своё приложение (чтобы потом проверить как оно коннектится с соц сетями).

Создаю новый класс теста

class TestSocialReg extends PHPUnit_Extensions_Selenium2TestCase

Далее в setUp нужно сконфигурировать браузер

$this->setBrowser('firefox');
$this->setBrowserUrl('https://www.facebook.com');

Если этого не сделать там, то происходит ошибка

Undefined index: browserUrl

Далее создаю тест

function testDo() {
	
	$this->url('/facebook');
	sleep(1);
	
	$this->setBrowserUrl('http://www.opera.com');
	$this->url('/computer');

	sleep(1);
}

В итоге переход на сайт Оперы не происходит, а финальная страница в открытом браузере оказывается

https://www.facebook.com/computer

То есть строка смены сайта была проигнорирована:

$this->setBrowserUrl('http://www.opera.com');

Есть ли какой-то способ сменить сайт в процессе выполнения теста?

Я бы мог сделать эту операцию в три действия — создав три разных файла теста на три разных сайта, но я не знаю как гарантировать это в процессе выполнения всех тестов в директории эти три теста будут выполнены первыми. На этот вопрос, если кто знает, я бы тоже с радостью получил ответ.
  • Вопрос задан
  • 3883 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@m-haritonov
Если мне не изменяет память, то url() может принимать абсолютные URL адреса (с доменом), а через setBrowserUrl() можно задать пустой базовый путь. Т.е. попробуйте исправить свой код примерно так:

function setUp() {
    $this->setBrowser('firefox');
    $this->setBrowserUrl('');
}

function testDo() {
    $this->url('https://www.facebook.com/facebook');
    $this->url('http://www.opera.com/computer');
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
fog
@fog Автор вопроса
Пока единственной способ который я нашел, весьма дурацкий: Каждый раз в setUp проверять некий статус какие сайты уже были пройдены и назначать следующий, как-то так:

class TestSocialReg extends PHPUnit_Extensions_Selenium2TestCase {
	
	private static $callNumber = 1;
	
	function setUp() {
		$this->setBrowser('firefox');
		
		if (self::$callNumber == 1) {
			$this->setBrowserUrl('https://www.facebook.com');
		} else {
			$this->setBrowserUrl('http://opera.com');
		}
	}
	
	function testDo() {
		$this->url('/facebook');
		sleep(1);
		
		self::$callNumber++;
	}
	
	function testDo2() {

		$this->url('/computer');
		sleep(1);
		
		self::$callNumber++;
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект
22 дек. 2024, в 19:47
3000 руб./за проект