Сценарий Selenium webdriver не может выполнить sendkey () в IE 8 при запуске из jenkins

У меня есть сетка селена с концентратором, работающим на сервере CI (jenkins). Всякий раз, когда я создаю и запускаю свой проект из jenkins, он не выполняет:

WebElement inputElement = driver.findElement(By.xpath("//a[contains(@href,\"/Case/Add")]"));

inputElement.sendKeys(Keys.ENTER);

или, скорее, селен считает, что это так, и переходит к следующей команде, то есть selenium.select("id=LifeOffice", "label=AMP");

Узлы - это виртуальные машины, на каждой из которых запущен другой браузер, и эта проблема возникает только тогда, когда сценарий выполняется в браузере IE 8. Когда я запускаю сценарий из своей среды IDE, все в порядке.

Я пробовал использовать click (); и ((JavascriptExecutor)driver).executeScript("arguments[0].fireEvent('onclick');",inputElement);, но проблема не исчезла ...


person user1441882    schedule 12.07.2012    source источник


Ответы (1)


Это будет звучать странно, но попробуйте взглянуть на страницу сразу после команды sendkeys. Если элемент находится снаружи или внутри области просмотра, почти касаясь границы, это могло случиться с вами:

Элемент так и не получил фокуса, потому что он скрыт за полосой прокрутки браузера / строкой состояния / частью страницы, которая его закрывает. Обычно IE прокручивает элемент в область просмотра и фокусирует его, но иногда, в крайних случаях, этого не происходит. И вызовы focus (или щелчки, или что-то еще) затем вызываются в строке состояния / полосе прокрутки / пустом фрагменте страницы.

Обходной путь? Я знаю только два:

  • изменить разрешение компьютера / размер окна / макет IE (сделать его полноэкранным, отключить панели инструментов и т. д.)
  • убедитесь, что вы никогда не меняете разрешения / размеры окон и т. д. и работаете с чистым JavaScript в этих крайних случаях:

    ((JavascriptExecutor)driver).executeScript("arguments[0].click()", inputElement);
    
person Petr Janeček    schedule 12.07.2012
comment
У меня был очень похожий опыт. Как ни странно, это произошло и на сервере Jenkins, и в моей IDE. Локально изменение размера окна решило проблему. На сервере я также изменил размер окна браузера в надежде, что это изменит поведение по умолчанию. Но за тот же период я ​​также перезапустил как сервер Jenkins, так и сервер, на котором работало приложение, так что это могло быть какое-то сочетание вещей, которое остановило проблему. - person Martin McCallion; 10.10.2013