从Selenium中的上下文菜单中选择右键单击选项



我有一个场景,我需要右键单击链接,当出现上下文菜单时,我需要单击选项" Incognito窗口中的打开链接"。当我尝试通过以下代码段实现此目的时,我可以看到上下文菜单出现,但没有在新窗口中启动链接,而是在同一窗口中启动链接。

driver = new ChromeDriver();
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.get("http://www.google.com/");
    Actions action = new Actions(driver);
    WebElement ele = driver.findElement(By.linkText("About"));
action.contextClick(ele).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).perform();

有什么建议如何实现这一目标?

可能有一个键盘快捷键可以在隐身窗口中打开链接,但我找不到一个链接,但我看不到很长时间。您可能有更好的运气。

另一种方法是抓住要单击的链接的URL,使用键盘快捷键(Ctrl Shift N)打开一个隐身窗口,然后导航到URL。这不是理想的,但我不知道另一种方法。

是否有某种原因您不能仅在隐身窗口中启动脚本并从那里开始?

此上下文菜单不是HTML页面的一部分,但这是来自Chrome(桌面应用程序)的菜单
Selenium/WebDriver没有能力自动化桌面应用程序,您可以使用自动或类似软件进行


但是您所需要的只是打开一个新的浏览器会话(隐身窗口不过是一个新的独立浏览器会话)。
要使用WebDriver模拟此行为,只需打开一个新的Chrome驱动程序:

WebDriver drv1 = new ChromeDriver();
drv1.get("https://www.google.pl");
drv1.findElement(By.name("q")).sendKeys("About");
........
........
// This will open a new browser window with a new, independent browser session
WebDriver drv2 = new ChromeDriver();
drv2.get("https://www.google.pl");
drv2.findElement(By.name("q")).sendKeys("Hello");   
........
........
drv1.do-Something-in-session-1
.....
drv2.do-Something-other-in-session-2
....

最新更新