Перейти к содержимому

yarick

Регистрация: 04 сен 2012
Offline Активность: 03 дек 2020 04:08
-----

#114696 Как твитить с помощью Selenium?

Написано yarick 16 февраля 2013 - 08:02

Вот что у меня получилось с помощью behat с его стандартными функциями (некоторые написаны мной такие как wait и clickFindedPageElement ) на скорую руку:
Браузер FF
selenium-server-standalone-2.28.0.jar

@javascript @twitter
Сценарий: Пользователь создает новый твит
Допустим открыта страница "https://twitter.com/"
И заполняю поле "signin-email" значением "user"
И заполняю поле "signin-password" значением "password"
Если кликаю на элемент, найденный по xpath "//button[@class='submit btn primary-btn flex-table-btn js-submit']"
То вижу текст "View my profile page"
И кликаю на элемент, найденный по xpath "//button[@id='global-new-tweet-button']"
Если создаю новый твит с текстом "test"
То вижу текст "test"

Только после нескольких запусков этого теста возникла не большая проблема "твиттер" попросил доказать что Вы не робот. В ручную авторизировался с импользованием captcha. Затем снова запустил тест и все ок!
/**
 * @Given /^открыта страница "([^"]*)"$/
 */
 public function openedPage($url)
{
  $this->wait();
  $this->visit($url);
}
public function wait($time=1000)
{
  $this->getSession()->wait($time);
}

/**
 * @Given /^заполняю поле "([^"]*)" значением "([^"]*)"$/
 */
 public function zapolniaiuPolieZnachieniiem($field, $value)
{
  $this->fillField($field, $value);
}

/**
 * @Given /^кликаю на элемент, найденный по xpath "([^"]*)"$/
 */
 public function pressXpathElement($xpath)
{
  $this->wait();
  $this->clickFindedPageElement($xpath);		
}
 public function clickFindedPageElement($keySearch)
{
  $element = $this->find('xpath', $keySearch);
    if ($element){
    $element->click();
    }
    else {
    throw new Exception("Элемент, xpath которого равен " . $keySearch . " - не найден");
    }
}
/**
 * @Given /^создаю новый твит с текстом "([^"]*)"$/
 */
 public function createNewTwit($text)
{
  $this->wait(2000);
  $element = $this->find('xpath', "//div[@id='tweet-box-global']");
  
  if ($element){
  $element->click();
  $this->wait();
  $element->setValue($text);
  $this->clickFindedPageElement("//*[@id='global-tweet-dialog']/div[2]/div/div[2]/form/div[2]/div[2]/button");
  }
  $this->wait(3000);
}

/**
 * @Then /^вижу текст "([^"]*)"$/
 */
 public function seeText($text)
{
  $this->wait();
  $this->assertPageContainsText($text);
}

Behat.png
  • 1