обрабатывать щелчок правой кнопкой мыши по селену / nide для IE in java - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь щелкнуть правой кнопкой мыши по указанному элементу c, так как он открывает пользовательское меню. Дело в том, что IE не выполняет щелчок правой кнопкой мыши. (это работает с firefox), также собственные события отключены для IE

(с использованием селенида: elem.contextClick();)

Я предполагаю, что я сделал что-то не так, или действие не работает и в этом случае мне нужно обойти это, и я попытался вызвать некоторый код js: executeJavaScript("document.querySelector('cssSelector').???()");

, в моем случае вот событие, связанное с этим элементом, как видно в firefox html inspector ( не могу показать код, извините за это)

enter image description here

чтобы возобновить:

как мне щелкните правой кнопкой мыши по указанному элементу c в селене / ниде и, если он сломан, как мне вызвать событие с js

Ответы [ 3 ]

1 голос
/ 21 февраля 2020

Согласно этой статье, кажется, что свойство oncontextmenu поддерживает браузер IE, но атрибут contextmenu работает только в Firefox.

как мне щелкнуть правой кнопкой мыши на указанном c элемент в селене / nide и, если он сломан, как мне вызвать событие с js

Пожалуйста, обратитесь к следующему коду, используйте событие mousedown для обработки события левого / правого щелчка , затем с помощью события нажатия кнопки или непосредственно создайте событие и вызовите функцию mouseDown.

<script type="text/javascript">
    function mouseDown(e) {
        event.preventDefault();
        e = e || window.event;
        switch (e.which) {
            case 1: leftClick(); break;
            case 2: middleClick(); break;
            case 3: rightClick(); break;
        }
    }

    function leftClick() {
        alert("left click event");
    }
     function middleClick() {
        alert("middle click event");
    }
     function rightClick() {
        alert("right click event");
    }

    function triggerClick(e) {
        //trigger the right click event.
        var event = document.createEvent("Event");
        event.which = 3;
        mouseDown(event);
    }
</script>


<body oncontextmenu="return false;">
    <a id="btnSubmit" href="#" onmousedown="mouseDown(event);">Click Here</a> <br />
    <input type="button" id="btnTriggger" value="Trigger Button" onclick="triggerClick(event);" />
</body>

[Комментарий] Свойство тела oncontextmenu используется для предотвращения контекстного меню браузера.

Снимок экрана как показано ниже:

enter image description here

При использовании веб-драйвера selenium на веб-сайте вы можете добавить скрытую кнопку и использовать приведенный выше код для запуска правой событие click из скрытого события click кнопки, затем, найдя скрытую кнопку в веб-драйвере, вы можете вызвать метод click, чтобы вызвать событие щелчка правой кнопкой мыши.

Besid es, вы также можете использовать JavascriptExecutor для выполнения JavaScript через Selenium Webdriver.

0 голосов
/ 24 февраля 2020

хорошо, плохо, моя проблема была глубже, но я нашел решение:

Мне пришлось использовать пользовательское событие jquery по другим причинам, вот как это выглядит

cmd="$(cssselector).trigger(jQuery.Event('mousedown',{button:2}))"
executeJavaScript(cmd);

если пользовательское событие не требуется (иначе, когда тестируемая страница хорошо сделана -_-)

cmd="$(cssselector).trigger('mousedown')"
executeJavaScript(cmd);
0 голосов
/ 20 февраля 2020

Сначала создайте экземпляр класса Actions: в своем коде.

Actions actions = new Actions(driver);

пример кода правой кнопкой мыши.

 WebElement btnElement = driver.findElement(By.id("rightClickBtn"));
 actions.contextClick(btnElement).perform();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...