Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Selenium切换活动选项卡_Java_Selenium - Fatal编程技术网

Java 使用Selenium切换活动选项卡

Java 使用Selenium切换活动选项卡,java,selenium,Java,Selenium,我开发了此代码,用于将所有搜索结果打开到新选项卡: String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL, Keys.RETURN); results.get(i).sendKeys(selectLinkOpeninNewTab); for (int i = 0; i < results.size(); i++) { ArrayList<String> tabs2 = new ArrayList<Stri

我开发了此代码,用于将所有搜索结果打开到新选项卡:

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL, Keys.RETURN);
results.get(i).sendKeys(selectLinkOpeninNewTab);

for (int i = 0; i < results.size(); i++)
{
    ArrayList<String> tabs2 = new ArrayList<String>(driver.getWindowHandles());
    driver.switchTo().window(tabs2.get(1));
    driver.close();
    driver.switchTo().window(tabs2.get(0));
}
String选择linkopeninnewtab=Keys.chord(Keys.CONTROL,Keys.RETURN);
结果.获取(i).发送键(选择LinkOpenInNewTab);
对于(int i=0;i
我想要的是,当我打开带有搜索结果的所有选项卡时,我想在所有选项卡之间切换,延迟2秒

如何实现这一点?

试试这段代码

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class TabSwitching {

    public static void main(String[] args) throws InterruptedException, AWTException {
        System.setProperty("webdriver.chrome.driver", "D:/WorkSpace/Driver/chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get("http://www.google.com/xhtml");
        Thread.sleep(5000);
        WebElement searchBox = driver.findElement(By.name("q"));
        searchBox.sendKeys("Software testing");
        searchBox.submit();

        System.out.println("Current Url: " + driver.getCurrentUrl());

        WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("h3.r a")));

        List<WebElement> results = driver.findElements(By.xpath("//h3[@class='r']/a"));

        for (WebElement ele : results) {
            String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL, Keys.RETURN);
            ele.sendKeys(selectLinkOpeninNewTab);
        }
        Thread.sleep(5000);
        ArrayList<String> tabs2 = new ArrayList<String>(driver.getWindowHandles());
        System.out.println(tabs2.size());

        for (int i = tabs2.size()-1; i>=0; i--) {
            Thread.sleep(2000);
            driver.switchTo().window(tabs2.get(i));
            Robot robot = new Robot();

            robot.keyPress(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_TAB);
            robot.keyRelease(KeyEvent.VK_TAB);
            robot.keyRelease(KeyEvent.VK_CONTROL);
            System.out.println(driver.getTitle() + "i: " + i);
            driver.close();
        }
    }
}
import java.awt.AWTException;
导入java.awt.Robot;
导入java.awt.event.KeyEvent;
导入java.util.ArrayList;
导入java.util.List;
导入org.openqa.selenium.By;
导入org.openqa.selenium.Keys;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.chrome.ChromeDriver;
导入org.openqa.selenium.support.ui.ExpectedConditions;
导入org.openqa.selenium.support.ui.WebDriverWait;
公共类TabSwitching{
公共静态void main(字符串[]args)抛出InterruptedException、AWTException{
System.setProperty(“webdriver.chrome.driver”,“D:/WorkSpace/driver/chromedriver.exe”);
WebDriver驱动程序=新的ChromeDriver();
驱动程序。获取(“http://www.google.com/xhtml");
睡眠(5000);
WebElement searchBox=driver.findElement(By.name(“q”);
searchBox.sendKeys(“软件测试”);
searchBox.submit();
System.out.println(“当前Url:+driver.getCurrentUrl());
WebDriverWait wait=新的WebDriverWait(驱动程序,10);
等待.直到(预期条件.元素的存在(由.css选择器(“h3.r a”)));
List results=driver.findElements(By.xpath(“//h3[@class='r']/a”);
for(WebElement元素:结果){
字符串selectLinkOpeninNewTab=Keys.chord(Keys.CONTROL,Keys.RETURN);
ele.sendKeys(在newtab中选择linkopen);
}
睡眠(5000);
ArrayList tabs2=新的ArrayList(driver.getWindowHandles());
System.out.println(tabs2.size());
对于(int i=tabs2.size()-1;i>=0;i--){
《睡眠》(2000年);
driver.switchTo().window(tabs2.get(i));
机器人=新机器人();
机器人按键(KeyEvent.VK_控制);
robot.keyPress(KeyEvent.VK_选项卡);
robot.keyRelease(KeyEvent.VK_选项卡);
robot.keyRelease(KeyEvent.VK_控制);
System.out.println(driver.getTitle()+“i:”+i);
driver.close();
}
}
}

选项卡一个接一个地关闭,但我想切换活动选项卡。看起来Chrome中有一个错误,它不能正常工作。这是因为我用这种方式编程。它不是驱动程序的chromeInstead.close()中的一个bug;做你想做的其他事情。好的,我移除了它,但它仍然不起作用。