Невозможно нажать кнопку в пределах диапазона, используя javascript или xpath - PullRequest
1 голос
/ 09 января 2020

Я использую RobotFramework (RF) для тестирования веб-приложения. Я хочу нажать кнопку во всплывающем окне. Я попытался xpath и javascript, чтобы найти элемент. SeleniumLibrary говорит, что по этому элементу щелкнули, но со стороны пользовательского интерфейса внешнего интерфейса я не вижу, чтобы кнопка действительно была нажата, поскольку ожидается, что событие отобразит выбор элементов. То, что говорит результат скрипта, не совпадает c с тем, что отображается в пользовательском интерфейсе. Ручной щелчок работает нормально.

Вот коды js и xpath, которые я пробовал ...

Execute Javascript 
 document.querySelector("#CallOutcomes_InboundInbound_menuPlace").querySelector('.hierarchicalMenuButton').click()

Execute Javascript 
   document.querySelector("#CallOutcomes_InboundInbound_menuPlace").querySelectorAll('span[style="height: 0px;"]')[0].querySelector("#startMenuButton").click()

Execute Javascript 
   document.querySelector("#CallOutcomes_InboundInbound_menuPlace").querySelectorAll('span[style="height: 0px;"]')[0].querySelector('.hierarchicalMenuButton').click()

Click Element   //*[@id="CallOutcomes_InboundInbound_menuPlace"]//*[contains(@class,"hierarchicalMenuButton")]

Вот фрагмент html ...

<pre class="showQueryMenuTable" id="CallOutcomes_InboundInbound_menuPlace">
<span style="height: 0px;">
<input type="button" class="hierarchicalMenuButton" value="Call Outcomes" id="startMenuButton">

Когда я пытаюсь ввести код javascript в консоли, локатор может найти элемент, но когда добавляется .click (), это когда вещи go массив: кнопка не нажимается.

Нужно ли здесь что-то особенное? Он отлично работает с другими кнопками / элементами. Чего мне не хватает?

См. Изображение здесь: Robot test result says passed but in reality not

----- Отредактировано 10 января 2020 г. ----

I Вы обнаружили, что событие для кнопки - это нажатие мыши, а не нажатие. Удивительно, но ключевое слово Mouse Down в РФ не работает. Поэтому я решил, что вместо этого использовал Javascript.

Execute javascript    document.querySelector("#CallOutcomes_InboundInbound_menuPlace .hierarchicalMenuButton").dispatchEvent(new MouseEvent('mousedown',{})); 

Эта команда исправила это. Я не уверен, каков долгосрочный эффект этого для моего сценария, но он работает в промежутке. Ура!

1 Ответ

0 голосов
/ 10 января 2020

Я обнаружил, что событие для кнопки - это нажатие мыши, а не щелчок. Удивительно, но ключевое слово Mouse Down в РФ не работает. Поэтому я решил, что вместо этого использовал Javascript.

Execute javascript    document.querySelector("#CallOutcomes_InboundInbound_menuPlace .hierarchicalMenuButton").dispatchEvent(new MouseEvent('mousedown',{})); 

Эта команда исправила это. Я не уверен, каков долгосрочный эффект этого для моего сценария, но он работает в промежутке. Ура! * * 1004

...