2015-06-24 2 views
2

У меня есть элемент на веб-странице, который становится видимым только после нажатия его родительского элемента. Итак, после нажатия демонстрации в списке демонстраций, отображается строка значков, которые представляют действия для выбранной демонстрации. Следующий код прекрасно работает как с WebDriver и chromedriver:Не удается щелкнуть элемент с помощью IEDriverServer

demo.click(); //click demo 
waitForElementIsDisplayed(demoReservation_btn); //wait until reservation icon is displayed 
demoReservation_btn.click(); //click icon 

Первоначально я получал StaleElementReferenceException и я попытался это исправить, имея попробовать/поймать блок внутри цикла в то время, что будет продолжать цикл, пока значок не был нажат , Это привело к сбою IEDriverServer после нескольких циклов.

Я также попробовал оборачивать его в действии, как так:

Action action = new Action(driver); 
action.click(demo).click(demoReservation_btn).build().perform() 

Это приводит к NoSuchElementException.

Я знаю, что есть некоторые проблемы, упомянутые в documentation о фокусе браузера и зависании элементов, но я не верю, что это проблема. Я пробовал пару других вещей, таких как добавление moverToElement к действию, зависающее над элементом, но не имело успеха с ними. Я считаю, что одним из возможных решений является использование исполнителей javascript, но я хотел бы избежать этого подхода, если это возможно, любые другие предложения?

EDIT

IEDriverServer установки:

File file = new File("IEDriverServer.exe"); 
System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); 
driver = new InternetExplorerDriver(); 
driver.manage().window().maximize(); 
return driver; 
+0

Как только обратитесь к этому: ** http: //stackoverflow.com/questions/30660578/unable-to-click-the-link-on-ie-using-iedriver/31002321#31002321**. –

+0

, который является частью необходимой конфигурации для работы IEDriverServer. Я бы не дошел до того, что я сейчас, не сделав этого. – Cathal

+0

Использовать 'WebDriverWait wait = new WebDriverWait (драйвер, 10);' с ExpectedConditions – Madhan

ответ

3

Попробуйте отключить Native события IE

DesiredCapabilities cap = DesiredCapabilities.internetExplorer(); 
cap.setCapability("nativeEvents",false); 
driver = new InternetExplorerDriver(cap); 

я имел лучший результат, используя, что в C# версии. Прочитайте this, чтобы узнать, зачем вам это нужно.

+0

Рад помочь ... – Saifur

+1

Nice one Saifur, работал в первый раз, также благодарит за ссылку для объяснения. – Cathal

+0

Да. Это наиболее краткое разъяснение в терминах Selenium и IEDriver от JimEvans, одного из основных участников Selenium C# binding. – Saifur

Смежные вопросы