Java Selenium坚持'driver.get'

时间:2016-09-13 21:18:08

标签: java selenium selenium-webdriver

我有一个代码应该循环来自文件的链接,但是在打开第一个链接后它就会卡住并且什么都不做。我有一个类似的代码,工作正常。我能想到的唯一区别是链接,但我不明白为什么链接会导致代码卡住

以下是初始驱动程序设置:

    System.setProperty("webdriver.gecko.driver",
            "/home/ xxx /Documents/Selenium/geckodriver");
    WebDriver driver = new FirefoxDriver();

以下是陷入困境的代码:

    try {
        Scanner input = new Scanner(new File("unsplashPicLink.txt"));
        System.out.println("file readed");

        while (input.hasNextLine()) {
            linkFromFile = input.nextLine();
            // this line gets printed
             System.out.println(linkFromFile);

            // opens the web page with the picture
            driver.get(linkFromFile);
            // the following text does not get printed
            System.out.println("Show this text");

            // code here for further processing

        }
    } catch (FileNotFoundException ex) {
        System.out.println("file not found");
    }

如上所示,代码卡在“ driver.get(linkFromFile);”上,显示网站并停留在那里。

我提到的链接如下:

https://images.unsplash.com/photo-1437650128481-845e6e35bd75?dpr=1&auto=format&crop=entropy&fit=crop&w=1199&h=800&q=80&cs=tinysrgb

我试图添加:

linkFromFile= linkFromFile.substring(0, linkFromFile.indexOf("?"));
linkFromFile= linkFromFile.replace("https", "http");

这样链接如下:

http://images.unsplash.com/photo-1437650128481-845e6e35bd75

但它没有任何区别。该页面需要一段时间才能加载(例如5-10秒)。

我还尝试添加:

            try {
                driver.get(linkFromFile);
            } catch (Exception e) {
                System.out.println("Error");
            }

但这并没有任何区别。

为什么代码被卡住的任何想法?卡住我的意思是在打开上面的链接后,没有其他事情发生。我希望有一条消息“显示此文本”,并打开下一个链接。

例如,在同一个类中,我有以下代码循环遍历文件的链接,似乎没有问题

        while (input.hasNextLine()) {
            linkFromFile = input.nextLine();

            driver.get(linkFromFile);

            try {
                List<WebElement> no = driver
                        .findElements(By.tagName("img"));

            // code here for further processing

            } catch (Exception e) {
                System.out.println("error " + e);
            }
        }

我对代码工作感到困惑,而不是类似代码。

由于

1 个答案:

答案 0 :(得分:0)

如果它有帮助,这就是我初始化我的chrome webdriver的方式,也许这是一个错误?只是猜测:

    //I declare the following globally just under 'public  class"insernamehere"'
    private WebDriver driver;

    //I then declare the following in my @Before part
//of the test so that it initializes before every test.
    System.setProperty("webdriver.chrome.driver", "C:/Users/ComputerName/Desktop/chromedriver2.23/chromedriver.exe");
    driver = new ChromeDriver();

如果有帮助,请告诉我