Java 如何在selenium中实现这一点

Java 如何在selenium中实现这一点,java,selenium,Java,Selenium,我是硒的新手,需要你的帮助。我试着运行一个测试来创建一个新的选项卡并放置一个新的页面。我使用的是CSS选择器,但它不起作用。控制台显示:stale元素引用:元素未附加到页面文档 下面是一段代码: @FindBy (css=".list-group > a[id=\"itemc\"]") private List<WebElement> categories; @FindBy (css="body")

我是硒的新手,需要你的帮助。我试着运行一个测试来创建一个新的选项卡并放置一个新的页面。我使用的是CSS选择器,但它不起作用。控制台显示:
stale元素引用:元素未附加到页面文档

下面是一段代码:

@FindBy (css=".list-group > a[id=\"itemc\"]")
    private List<WebElement> categories;
    @FindBy (css="body")
    private WebElement googleBar;
    public void testClick() {
        contactLink.click();
    }   
    public void moveTab(String web){
        googleBar.sendKeys(Keys.CONTROL + "t");
        for(WebElement category : categories) {
        driver.get(web);
        w.waitForElementToBeVisible(driver,contactLink, 2);
        category.click();
    
        }
    }

要打开新选项卡及其上的页面,可以使用JavaScript执行器:

((JavascriptExecutor) driver).executeScript("window.open()");//open new tab
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));//switch tabs
((JavascriptExecutor)驱动程序).executeScript(“window.open()”)//打开新选项卡
ArrayList tabs=新的ArrayList(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1))//切换选项卡

记住:
选项卡。get(0)
是第一个选项卡,而
选项卡。get(1)
是第二个选项卡,等等。。。就像在Java数组中一样。

谢谢老兄,我可以解决它,我使用了这个命令driver.switchTo().newWindow(WindowType.Tab)
((JavascriptExecutor) driver).executeScript("window.open()");//open new tab
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));//switch tabs