Кажется, событие Selenium click () срабатывает не всегда => время ожидания истекло? - PullRequest
26 голосов
/ 11 марта 2009

Вот что я делаю:

selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);

// do something, then navigate to a different page 
// (window focus is never changed in-between)

selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);

Ссылка «mylink» существует, первый вызов click () всегда работает. Но второй щелчок () иногда работает, иногда нет.

Похоже, что событие click () вообще не вызывается, потому что страница даже не начинает загружаться. К сожалению, это поведение недостаточно детерминировано.

Вот что я уже пробовал:

  1. Установить более длительное время ожидания
    => не помогло

  2. Ожидание наличия элемента после загрузки одной страницы
    => тоже не работает, так как страница даже не начинает загружаться

А пока я дважды вызывал click (), поэтому:

selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);

// do something, then navigate to a different page 
// (window focus is never changed in-between)

selenium.click("link=mylink");
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);

Это сработает, но это не очень хорошее решение. Я также видел на другом форуме, где кто-то предложил написать что-то вроде «clickAndWaitWithRetry»:

  try {
      super.click("link=mylink");
      super.waitForPageToLoad(60000);
  }
  catch (SeleniumException e) {
      super.click("link=mylink");
      super.waitForPageToLoad(60000);
  }

Но я думаю, что это тоже не правильное решение .... Любые идеи / объяснения, почему событие click () иногда не вызывается?

Ответы [ 14 ]

0 голосов
/ 25 февраля 2011

У меня та же проблема :( с selenium IDE 1.0.10, phpunit 3.5, selenium RC server 1.0.3

 EDITED: 
 The culprit seems to be browser FF 3.6.13 , after upgrade to FF 3.6.14
  all my errors are  gone . My tests are working like charm :). 

 Selenium IDE 1.0.10
 PHPUnit: 3.5.6
 Selenium Server:selenium-2.0b1 (selenium-2.0b2 is buggy)
0 голосов
/ 01 февраля 2011

У меня возникла та же проблема, и я обнаружил, что сначала мне нужно получить текст ссылки. Я знаю, что это не идеальный способ сделать это, но мне повезло, что мои ссылки имеют уникальное имя.

C # код:

var text = Selenium.GetText(myLocator);
Selenium.Click("link=" + text);
0 голосов
/ 20 июля 2010
selenium.click("link=Continue to this website (not recommended).");
Thread.sleep(5000);
0 голосов
/ 21 апреля 2010

Попробуйте это:

selenium.fireEvent(ID, "keypress");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...