【问题标题】:Selecting right click option from context menu in selenium从 selenium 的上下文菜单中选择右键单击选项
【发布时间】:2017-10-02 19:02:10
【问题描述】:

我有一个场景,我需要右键单击链接,当出现上下文菜单时,我需要单击选项“在隐身窗口中打开链接”。 当我尝试通过下面的代码 sn-p 来实现这一点时,我可以看到一个上下文菜单出现,但不是在新窗口中启动链接,而是在同一窗口中启动链接。

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();

对如何实现这一点有任何建议吗?

【问题讨论】:

    标签: selenium selenium-webdriver webdriver


    【解决方案1】:

    可能有用于在隐身窗口中打开链接的键盘快捷键,但我找不到,但我没找多久。你可能会有更好的运气。

    另一种方法是获取您要单击的链接的 URL,使用键盘快捷键 (CTRL+SHIFT+N) 打开一个隐身窗口,然后导航到该 URL。这并不理想,但我不知道另一种方法。

    是否有某些原因您不能在隐身窗口中启动脚本并从那里继续?

    【讨论】:

    • 我有一个场景,我需要通过单击父窗口中的链接打开两个窗口/选项卡,并使用 driver.switchTo() 在两个窗口中同时执行一些操作。我正在尝试以隐身模式打开该窗口,以确保浏览器会话不同
    【解决方案2】:

    此上下文菜单不是 html 页面的一部分,但这是来自 Chrome(桌面应用程序)的菜单
    Selenium/WebDriver 不具备自动化桌面应用程序的能力,您可以使用 AutoIt 或类似软件来实现它

    但是您所需要的只是打开一个新的浏览器会话(隐身窗口只不过是一个新的、独立的浏览器会话)。
    要使用 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
    ....
    

    【讨论】:

    • 感谢您的回复,我总是可以选择创建另一个 webDriver 会话,但我不想这样做,因为只有几个测试需要这个特定的场景。但是感谢您的指针,上下文菜单来自窗口,我认为它来自浏览器并且是 DOM 的一部分。
    • 即使您使用外部工具(例如 AutoIt)自动执行此菜单,也会在 WebDriver 之外打开一个新的浏览器窗口,Selenium 将不知道该会话并且无法处理它。
    • 哦,是吗?你还能想到其他选择吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    相关资源
    最近更新 更多