Лучший способ провести время в Selenium - PullRequest
1 голос
/ 25 августа 2010

Я пишу некоторые тесты Selenium на Java и в основном пытаюсь использовать проверки вместо утверждений, потому что проверяемые объекты не очень зависимы, поэтому я не хочу прерывать работу, если одна маленькая вещь нене работаетОдна из вещей, на которую я хотел бы обратить внимание, это то, загружаются ли определенные страницы Drupal навсегда.Какой лучший способ сделать это?

Небольшой пример схемы, которую я использую.

selenium.open("/m");
selenium.click("link=Android");
selenium.waitForPageToLoad("100000");
if (selenium.isTextPresent("Epocrates")) {
       System.out.println("     Epocrates confirmed");
} else {
       System.out.println("Epocrates failed");
}

Должен ли я иметь два оператора "waitForPagetoLoad" (скажем, 10000 и 100000) и, если нужный текст не отображается после первого, напечатать оператор?Это кажется неуклюжим.То, что я хотел бы сделать, - это просто строка типа

if (timeToLoad>10000) System.out.println("Epocrates was slow");

, а затем продолжайте проверять, присутствует ли текст.

Ответы [ 4 ]

4 голосов
/ 25 августа 2010

waitForPageToLoad будет ждать загрузки следующей страницы. Таким образом, вы можете просто сделать таймер начала / окончания и сделать свой if:

long start = System.currentTimeMillis();
selenium.waitForPageToLoad("100000");
long timeToLoad= (System.currentTimeMillis()-start);
if (timeToLoad>10000) System.out.println("Epocrates was slow");
0 голосов
/ 12 января 2015

В тесте интеграции Selenium я сделал это так, используя nano-time и преобразовав в удвоенное значение, чтобы получить секунды:

long endTime = System.nanoTime();
long duration = (endTime - startTime);
Reporter.log("Duration was: " + ((double)duration / 1000000000.0) + " seconds.", true);
assertTrue( duration >=0 || duration <= 1000, "Test that duration of default implicit 
   timeout is less than 1 second, or nearly 0.");
0 голосов
/ 28 августа 2010

Лучший способ дождаться чего-то в Selenium - это:

        Reporter.log("Waiting for element '" + locator + "' to appear.");
    new Wait()
    {
        public boolean until()
        {
            return selenium.isElementPresent(locator);
        }
    }.wait("The element '" + locator + "' did not appear  within "
            + timeout + " ms.", timeout);

Официант является частью селена, вам нужно только импортировать его.

Также здесь есть структура, котораяты можешь использовать.Он с открытым исходным кодом, обрабатывает в основном все и может быть легко расширен.

https://sourceforge.net/projects/webauthfw/

Используйте его хорошо и дайте нам кредит хехе.:)

Приветствия, Гергели.

0 голосов
/ 25 августа 2010

Ваш текст загружается после загрузки страницы? Я имею в виду, текст вставляется динамически? В противном случае текст должен присутствовать, как только страница была загружена.

selenium.isTextPresent

не ждет. Проверяет только доступную в данный момент страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...