java - 如何使用操作类在相邻窗口或选项卡中打开链接(上下文单击元素-> sendkeys ArrowDown -> sendkeys Enter)
问题描述
我想在新窗口中打开应用程序的链接。使用操作类正在我当前所在的同一窗口中打开链接。
我已经尝试在具有多个应用程序的 chrome 驱动程序和 firefox 驱动程序上使用带有以下代码的 Actions 类,但没有一个有效。
System.setProperty("webdriver.gecko.driver", "D:\\MySpace\\AmozonEcomm\\Dependencies\\geckodriverv21.exe");
WebDriver driver = new FirefoxDriver(); //Creating an instance of Chrome driver
driver.manage().window().maximize();
driver.get("http://automate-apps.com/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
Actions action = new Actions(driver);
action.contextClick(driver.findElement(By.partialLinkText("Selenium Questions"))).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();
我的期望是链接应该在新窗口中打开,因为我试图在上下文单击后选择“在新窗口中打开链接”选项。但是每次链接都在同一个窗口中打开。
解决方案
要在相邻的选项卡/窗口中打开带有文本作为Selenium 问题的链接,您可以使用以下解决方案:
代码块:
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("http://automate-apps.com/"); WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Selenium Questions"))); new Actions(driver).keyDown(Keys.CONTROL).click(elem).keyUp(Keys.CONTROL).build().perform();
浏览器快照:
推荐阅读
- google-cloud-functions - Flutter_Stripe 包 - 使用付款表创建市场(+Firebase 云功能)
- python - 如何在特定标签中查找现有数字,但该标签存在多次(beautifulsoup)
- wordpress - 使用数字登录 wordpress jwt auth api & (otp)
- android - 我在 android studio 上运行应用程序时遇到问题
- testing - 测试舵图模板
- django - 如何优化 Django oscars 搜索视图?
- python - 如何打印完整金字塔的金字塔?
- selenium - 自动提取 Youtube 广告 ID 的方法?
- kubernetes - 我想知道为什么很多资源管理器(Yarn、Mesos、Kubernetes 等)不支持设置容器的磁盘 I/O 资源使用情况
- excel - Excel在使用“IF”函数时没有返回正确的值