Я использую 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 массив: кнопка не нажимается.
Нужно ли здесь что-то особенное? Он отлично работает с другими кнопками / элементами. Чего мне не хватает?
См. Изображение здесь:
----- Отредактировано 10 января 2020 г. ----
I Вы обнаружили, что событие для кнопки - это нажатие мыши, а не нажатие. Удивительно, но ключевое слово Mouse Down в РФ не работает. Поэтому я решил, что вместо этого использовал Javascript.
Execute javascript document.querySelector("#CallOutcomes_InboundInbound_menuPlace .hierarchicalMenuButton").dispatchEvent(new MouseEvent('mousedown',{}));
Эта команда исправила это. Я не уверен, каков долгосрочный эффект этого для моего сценария, но он работает в промежутке. Ура!