使用硒右键单击后无法专注于元素

时间:2018-12-18 20:09:53

标签: javascript java selenium-webdriver

我尝试了这段代码,但无法专注于新标签。右键单击后,它不会集中在新选项卡上,也不会引发任何错误。

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

    }
}

1 个答案:

答案 0 :(得分:0)

恐怕您不能通过键盘命令在上下文菜单中导航页面上的任何元素。

从代码中看,您似乎想在新窗口中打开链接的URL。您也可以通过打开链接元素URL的新窗口来完成此操作。

基本上有两种方法:Javascript和单击链接时使用修饰键的复合操作。

不过请注意,两种方法都无法处理javascript: URL或附加了单击事件处理程序的片段URL。

Javascript

这使用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]);