Selenium Actions类sendKeys下方向键操作在所有浏览器中均失效
问题根因
右键点击后发送下方向键无响应,核心问题有两个:
- 浏览器原生右键菜单弹出后,默认焦点不会自动落在菜单选项上,此时向页面元素或全局发送按键事件,菜单根本接收不到,自然不会有反应
- 靠方向键选择右键菜单选项的逻辑本身兼容性极差:不同浏览器、同一浏览器不同语言版本、不同版本号下,「在新窗口打开链接」的菜单位置都可能变化,只要选项顺序变了,按固定次数方向键的逻辑就会直接失效。
推荐实现方案
优先使用快捷键点击的方式绕开右键菜单,完全规避焦点、菜单顺序的问题,跨浏览器跨系统稳定性最高。
方案1:修饰键+点击链接(生产级脚本首选)
Windows/Linux系统下Ctrl+点击链接、Mac系统下Command+点击链接是浏览器通用的「新窗口打开链接」快捷键,不需要操作右键菜单,不会出现焦点丢失问题。
Java实现代码:
import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.interactions.Actions; import java.util.Set; public class OpenLinkNewWindow { public static void main(String[] args) throws InterruptedException { WebDriver driver = new ChromeDriver(); driver.get("https://www.google.com"); // 定位页面上的「关于」链接 WebElement aboutLink = driver.findElement(By.linkText("关于")); // 保存当前窗口句柄,后续切换窗口用 String originWindowHandle = driver.getWindowHandle(); Actions actions = new Actions(driver); // 自动适配系统的修饰键 Keys modifier = System.getProperty("os.name").toLowerCase().contains("mac") ? Keys.COMMAND : Keys.CONTROL; // 按住修饰键点击链接,再松开修饰键,触发新窗口打开 actions.keyDown(modifier) .click(aboutLink) .keyUp(modifier) .perform(); // 切换到新打开的窗口 Set<String> allHandles = driver.getWindowHandles(); for (String handle : allHandles) { if (!handle.equals(originWindowHandle)) { driver.switchTo().window(handle); break; } } // 后续可在新窗口执行测试逻辑 System.out.println("当前新窗口标题:" + driver.getTitle()); // 测试结束可按需切回原窗口、关闭驱动 // driver.switchTo().window(originWindowHandle); // driver.quit(); } }
方案2:强制操作右键菜单(仅临时调试用,不推荐)
如果必须模拟右键选菜单的操作,需要在右键后加短暂等待等菜单渲染完成,再发送按键,注意需要根据自己测试的浏览器版本调整方向键按压次数:
Actions actions = new Actions(driver); // 右键点击目标链接 actions.contextClick(aboutLink).perform(); // 等待100ms等右键菜单渲染、获取焦点 Thread.sleep(100); // 中文Chrome下「在新窗口打开」是右键后第二个选项,按1次下方向键后回车即可选中 actions.sendKeys(Keys.ARROW_DOWN) .sendKeys(Keys.ENTER) .perform();
该方案稳定性极差,浏览器更新、菜单语言变更、自定义菜单顺序都会导致逻辑失效,正式自动化脚本不要使用。
内容的提问来源于stack exchange,提问作者revathi Subramanian
相关产品推荐
相关产品推荐

