Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Selenium webdriver + FireFox + C# работа с всплывающим меню


(chudeska) #1

Доброго всем времени суток!

Перечитала много риквестов на тему, но что-то не смогла найти подходящего решения.

На сайте имеется меню с всплывающими подменю следующего вида (System Administrator -> Users and Companies -> Companies).

Соответсвенно необходимо выбрать меню Companies.

Пробую сделать так

   Actions build = new Actions(driver);
   Actions adm = build.MoveToElement(driver.FindElement(By.Id("ctl00_Menu1n8")));
   adm.Build().Perform();
   Actions us = build.MoveToElement(driver.FindElement(By.Id("ctl00_Menu1n78")));
   us.Build().Perform();
   Actions com = us.MoveToElement(driver.FindElement(By.Id("ctl00_Menu1n87")));
   com.Build().Perform();
   com.Click();

в итоге браузер открывает первое подменю, но не выбирает в нем элемент, т.е. он не становится активным (текст красного цвета), и ошибок твроде "элемент не найден" тоже не выдает

сорс меню айтемов:

 

<table">
    <tbody>
        <tr>

<td id="ctl00_Menu1n8" title="Administration of System" onkeyup="Menu_Key(event)" onmouseout="Menu_Unhover(this)" onmouseover="Menu_HoverStatic(this)">

        </tr>
    </tbody>
</table>

...

<tr id="ctl00_Menu1n78" title="Users and Companies" onkeyup="Menu_Key(event)" onmouseout="Menu_Unhover(this)" onmouseover="Menu_HoverDynamic(this)"></tr>


(Дмитрий Жарий) #2
Да, такие штуки часто происходят, а особенно  с выпадающими меню. 
Совета у меня два, отпишитесь если поможет. 
Первое, это вы можете включить NativeEvents. Тогда в FF действия будут происходить не через эмуляцию JavaScript, а через реальные передвижения мышки:
https://code.google.com/p/selenium/wiki/TipsAndTricks
 
Второе – это использование клавиатуры вместо мышки. Т.е. SendKeys(Keys.Right) SendKeys(Keys.Enter)
 

(vmaximv) #3

 com.Click();

клик без perform() - опечатка?


(chudeska) #4

Спасибо вам за ответы и советы.

 

Дело оказалось в доступности и видимости элементов меню.

Вообще не уверена, надо ли пытаться автоматизировать тестирование меню (ведь айтемов очень много) и если все же стоит, то как это делать правильно.