我尝试了这段代码,但无法专注于新标签。右键单击后,它不会集中在新选项卡上,也不会引发任何错误。
public class AM1 {
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "C:\\Selenium\\chromedriver.exe");
WebDriver d=new ChromeDriver();
d.get("https://jira.dematic.com/secure/Dashboard.jspa");
Thread.sleep(2000);
WebElement addoftask=d.findElement(By.xpath("//a[text()='Create']"));
Actions a=new Actions(d);
//Right click on component
a.contextClick(addoftask).perform();
a.sendKeys(Keys.ARROW_DOWN).perform();
}
}
答案 0 :(得分:0)
恐怕您不能通过键盘命令在上下文菜单中导航页面上的任何元素。
从代码中看,您似乎想在新窗口中打开链接的URL。您也可以通过打开链接元素URL的新窗口来完成此操作。
基本上有两种方法:Javascript和单击链接时使用修饰键的复合操作。
不过请注意,两种方法都无法处理javascript:
URL或附加了单击事件处理程序的片段URL。
这使用Javascript执行程序上下文使用从链接元素提取的URL来运行window.open()
。
// Execute a Javascript snippet
((JavascriptExecutor) d).executeScript("return window.open('"+ addoftask.getAttribute("href") +"', 'newtask');");
// Selenium does not automatically switch to new windows
d.switchTo().window("newtask");
可以在SeleniumHQ上找到有关JavascriptExecutor
的更多信息。
此方法使用一个动作,按修改键CTRL
使链接在新选项卡中打开。它还使用getWindowHandles()
获取一组打开的窗口(和选项卡)并切换到第二个窗口。
// Click with CTRL as modifier for new window.
a.keyDown(Keys.CONTROL).click(addoftask).perform();
// Switch to the second window
d.switchTo().window((String) d.getWindowHandles().toArray()[1]);