t.me/atinfo_chat Telegram группа по автоматизации тестирования

Webdriver фокусируется на элементе, но не кликает


(AlexQA) #1

Всем привет!

 

Есть выпадающее меню.

При попытке кликнуть на элемент в этом меню - курсор фокусируется на элементе, но клика не происходит.

 

 

Если в яваскипт кликнуть на этот  элемент явно то клик происходит, но работать через яваскрипт для меня не удобно.

document.getElementsByClassName('tool-highlighted-label')[18].click()

 

Пробовал:

element = driver.FindElement(By.Xpath(//*[text()='alert'])) другие xpath не подходят так как количетво элементов Class1 (см. ниже) всегда меняется.

Click(element)

MoveToElement(element).Click(element)  

MoveToElement(element, x, y).Click() 

MoveToElement(element).SendKeys(Keys.Enter) из Advanced User Interactions

 

Часть разметки где есть элемент

 

<div class="class1">

 <div class="user-class snippet">

    <span class="tool-highlighted-label">

<span>alert</span> Кликаем сюда.

   </span>

 </div>

</div>

 

Браузер Хром 20, webdriver  2.25, язык программирования C#

 

В firefox 14 работает (Click(element))

В IE 9 тоже не работает

Как мне побороть эту проблему? 

 

 

 


(Alexander Petrovich) #2

Что то мне кажется, что до того как вы наведёте курсор на элемент то он не class="tool-highlighted-label"
Думаю, стои сначала навести курсор на неподсвеченный элемент, потом кликнуть в подсвеченный. 

Или использовать xpath = .//div[@class="tool-highlighted-label"]/span/span


(AlexQA) #3

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

Класс не меняется при наведении.

Как я писал в Firefox работает даже по click(element). Похоже проблема в особенносте выполнения для Хром и IE.


(Alexander Petrovich) #4

А есть сайт в свободном доступе? Могу попробовать реализовать на пайтон


(AlexQA) #5

К сожалению,  нет.


(Alexander Petrovich) #6

Увидеть бы менюху. И подробностей побольше. Я сам не профи далеко, а пальцем в небо тыкать совсем никак :)


(AlexQA) #7

Еще идеи есть?


(AlexQA) #8

Ну раз решений пока нет, реализовал через Js


(Mykhailo Poliarush) #9

правильно сделали, что использовали воркераунд, так понять в чем проблема очень тяжело

в общем, надо еще понимать, на каком элемента происходит вызов события

для этого вам надо смотреть html и javascript в вашем случае

 

но это также может быть ошибка именно в вебдрайвере

а пробовали найти похожие баги? http://code.google.com/p/selenium/issues/list


(AlexQA) #10

Михаил, привет!

Ошибку не искал.

Сейчас ворэраунд работает. Задал программистом вопрос о доработки приложения для еще более удобного использования через js (присвоить каждому элементу в списке свой id)

Но решив эту проблему появилась новая...в IE and Firefox не срабатывает посылка ctrl+space. 

Пробовал через Advanced User Iteractions KeyDown(Keys.LeftControl).SendKeys(Keys.Space).KeyUp(Keys.LeftControl).buils.perform; и finselement().sendkeys(Key.Ctrl+Keys.Space)

в хроме рабоитает, а в IE and Fx нет.

Пока сам разбираюсь, если не получиться создам тему с тех деталями.


(Mykhailo Poliarush) #11

да, проблемы будут на каждом шагу.

хорошо, если что создавайте новую тему форума.