在 selenium/nide 中为 IE 在 java 中处理右键单击
handle right click in selenium/nide for IE in java
我试图在打开自定义菜单时右键单击特定元素,但 IE 不执行右键单击。 (它与 firefox 一起工作)也为 IE 禁用了本机事件
(使用硒化物:elem.contextClick();
)
我假设我做错了什么或者动作被破坏了,在那种情况下我需要绕过它并且我试图调用一些 js 代码:
executeJavaScript("document.querySelector('cssSelector').???()");
在我的例子中,这是在 firefox html 检查器中看到的与此元素关联的事件(无法显示代码,对此感到抱歉)
恢复:
如何右键单击 selenium/nide 中的特定元素,如果它坏了,我如何用 js 调用该事件
首先,在您的代码中实例化一个 Actions class:。
Actions actions = new Actions(driver);
示例代码右键单击。
WebElement btnElement = driver.findElement(By.id("rightClickBtn"));
actions.contextClick(btnElement).perform();
根据这篇文章,oncontextmenu 属性 似乎支持 IE 浏览器,但是 contextmenu 属性只在 Firefox 中有效。
how do i right click on a specific element in selenium/nide and if it
is broken, how do i call the event with js
请参考以下代码,使用mousedown事件处理left/right点击事件,然后使用按钮点击事件或直接创建事件调用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属性用于防止浏览器contextmenu。
截图如下:
在使用selenium webdriver的时候,在网站上可以添加一个隐藏按钮,使用上面的代码从隐藏按钮点击事件中触发右键事件,然后从webdriver中找到隐藏按钮后,可以调用click方法触发右键事件
此外,您还可以使用JavascriptExecutor通过Selenium Webdriver执行JavaScript。
好吧,不好意思,我的问题比这更严重,但我找到了解决方案:
出于其他原因,我不得不使用自定义 jquery 事件,所以看起来是这样的
cmd="$(cssselector).trigger(jQuery.Event('mousedown',{button:2}))"
executeJavaScript(cmd);
如果不需要自定义事件(也就是当您正在测试的页面制作精良时 -_-)
cmd="$(cssselector).trigger('mousedown')"
executeJavaScript(cmd);
我试图在打开自定义菜单时右键单击特定元素,但 IE 不执行右键单击。 (它与 firefox 一起工作)也为 IE 禁用了本机事件
(使用硒化物:elem.contextClick();
)
我假设我做错了什么或者动作被破坏了,在那种情况下我需要绕过它并且我试图调用一些 js 代码:
executeJavaScript("document.querySelector('cssSelector').???()");
在我的例子中,这是在 firefox html 检查器中看到的与此元素关联的事件(无法显示代码,对此感到抱歉)
恢复:
如何右键单击 selenium/nide 中的特定元素,如果它坏了,我如何用 js 调用该事件
首先,在您的代码中实例化一个 Actions class:。
Actions actions = new Actions(driver);
示例代码右键单击。
WebElement btnElement = driver.findElement(By.id("rightClickBtn"));
actions.contextClick(btnElement).perform();
根据这篇文章,oncontextmenu 属性 似乎支持 IE 浏览器,但是 contextmenu 属性只在 Firefox 中有效。
how do i right click on a specific element in selenium/nide and if it is broken, how do i call the event with js
请参考以下代码,使用mousedown事件处理left/right点击事件,然后使用按钮点击事件或直接创建事件调用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属性用于防止浏览器contextmenu。
截图如下:
在使用selenium webdriver的时候,在网站上可以添加一个隐藏按钮,使用上面的代码从隐藏按钮点击事件中触发右键事件,然后从webdriver中找到隐藏按钮后,可以调用click方法触发右键事件
此外,您还可以使用JavascriptExecutor通过Selenium Webdriver执行JavaScript。
好吧,不好意思,我的问题比这更严重,但我找到了解决方案:
出于其他原因,我不得不使用自定义 jquery 事件,所以看起来是这样的
cmd="$(cssselector).trigger(jQuery.Event('mousedown',{button:2}))"
executeJavaScript(cmd);
如果不需要自定义事件(也就是当您正在测试的页面制作精良时 -_-)
cmd="$(cssselector).trigger('mousedown')"
executeJavaScript(cmd);