Protractor测试右键变左键,非directConnect模式下求解决方案
解决Protractor在Selenium Server模式下右键点击失效的问题
我明白你的困扰——用Protractor的actions API尝试右键点击时,结果变成了左键点击,只有开启directConnect=true才能正常工作,但这会影响其他基于Selenium Server的测试。结合你的环境(Node v13.6.0,Protractor 5.4.2),给你几个不用切换到directConnect的可行方案:
方案1:通过JavaScript直接模拟右键点击
有时候Protractor的actions API在Selenium Server代理模式下会有兼容性问题,直接用浏览器原生JS触发右键事件更可靠。替换你的代码为:
try { // 获取元素的WebElement对象,通过JS触发contextmenu事件 browser.executeScript((element) => { const rightClickEvent = document.createEvent('MouseEvents'); rightClickEvent.initMouseEvent( 'contextmenu', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 2, null ); element.dispatchEvent(rightClickEvent); }, RFVModeling.FirstRowCreatediagonal.getWebElement()).then(() => { log.info('Right click Successful'); RFVModeling.CreateDiagonallink.click(); log.info('Created diagonal elements'); }); browser.sleep(5000); } catch (e) { console.log("", e); log.error(e.message, e); }
这个方法绕过了Protractor的actions封装,直接在浏览器端触发标准的右键菜单事件,兼容性更强。
方案2:更新Selenium Server与浏览器驱动版本
Protractor 5.4.2是相对老旧的版本,搭配Node 13可能存在兼容性问题,尤其是Selenium Server和浏览器驱动(比如ChromeDriver)的版本不匹配。
- 先查看你当前使用的浏览器版本(比如Chrome),找到对应的驱动版本
- 使用webdriver-manager更新驱动:
webdriver-manager update --versions.chrome=<对应Chrome版本的Driver版本> - 启动Selenium Server时指定更新后的驱动路径,确保Server和驱动版本匹配浏览器版本。
方案3:调整鼠标点击的定位偏移
有时候右键点击失效是因为mouseMove定位到了元素的边缘或不可交互的子元素,尝试添加偏移量确保点击到元素的核心区域:
try { browser.actions() .mouseMove(RFVModeling.FirstRowCreatediagonal, {x: 10, y: 10}) // 偏移10px到元素内部 .click(protractor.Button.RIGHT) .perform().then(() => { log.info('Right click Successful'); RFVModeling.CreateDiagonallink.click(); log.info('Created diagonal elements'); }); browser.sleep(5000); } catch (e) { console.log("", e); log.error(e.message, e); }
方案4:启用原生事件(Native Events)
在Protractor的配置文件中开启nativeEvents,让浏览器直接处理鼠标事件,而不是通过Protractor模拟:
exports.config = { // 其他配置项... capabilities: { browserName: 'chrome', chromeOptions: { args: ['--no-sandbox'] // 视情况添加必要的Chrome参数 }, nativeEvents: true // 启用原生事件 } };
注意:原生事件的支持程度因浏览器版本而异,需要测试是否适合你的环境。
内容的提问来源于stack exchange,提问作者Sumant
相关产品推荐
相关产品推荐

