Расширение Selenium: как вызывать команды? - PullRequest
5 голосов
/ 19 февраля 2011

Я читал о пользовательских расширениях и , расширяющих селен , но мне интересно, как вызвать команду из пользовательской команды, которую я создаю.

Я добавилфайл, подобный следующему для расширений ядра Selenium (user-extensions.js) в Selenium IDE Options.

// selenium-action-example.js

Selenium.prototype.doExample = function() {
  this.doOpen("/"); // doesn't waitForPageToLoad like the command does

  // These two commands are equivalent to the clickAndWait command. NOT!
  // For proof, see the filterForRemoteControl function:
  // http://code.google.com/p/selenium/source/browse/trunk/ide/src/extension/content/formats/formatCommandOnlyAdapter.js?r=8284#68
  this.doClick("css=a#example");
  this.doWaitForPageToLoad(); // doesn't wait at all

  this.doClick("link=Example");
  this.doWaitForElementPresent("example"); // error! undefined function
  this.doClick("example");
};

Другими словами, как я могу ожидать, что между щелчками внутри пользовательского действия будет что-то другое?

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

Ваша команда

this.doWaitForPageToLoad(); // doesn't wait at all

Не ожидает, так как вы не указали время ожидания в скобках.Вы должны написать это как

this.doWaitForPageToLoad(30000); // time in milliseconds

Обходить другую команду

this.doWaitForElementPresent("example"); // error! undefined function

, так как в Selenium нет никакой функции.всякий раз, когда он ожидает элемент, он проверяет, присутствует ли элемент или нет, поэтому вам следует подождать, пока он не станет видимым / присутствующим.Используя команды For loop и ispresent, вы можете сделать это.

Regards

0 голосов
/ 03 января 2012

Ожидание загрузки страницы не работает в текущих версиях Selenium.Насколько я вижу, это потому, что doWaitForPageToLoad откладывает ожидание до конца текущей команды Selenium IDE, то есть ожидание загрузки страницы останавливает выполнение test до тех пор, пока страница не будет загружена, но невыполнение фактической функции javascript, в которой она была выполнена.

Вам придется разделить вашу функцию на две части.

...