0

我遇到了 Selenium 通过网站爬行的问题。我在任何其他网站上都没有遇到过这个问题。我遇到的问题是我登录了这个站点(这是专有信息,所以我不能透露站点名称),当我尝试使用 Selenium webdriver.get("site.com ") 它立即让我退出,说我的会话已过期。

这不是任何其他网站的问题,当我在没有任何代码的情况下浏览该网站时,我的会话永远不会过期。

selenium(特别是java)有没有办法设置一个会话并保持它?

这是我第一次在这个网站上发帖,我已经尝试了我能想到的一切以及这里和谷歌上的所有建议,但我似乎无法让它发挥作用。当我最初使用我使用 ZAP 获取的值打开网站时,我什至尝试创建一个 cookie。

如果我可以提供更多信息,请告诉我,我很乐意提供。任何帮助表示赞赏!

一些代码:

public static void init(String userName, String password) {
File file = new File("C:\\Selenium\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
driver = new InternetExplorerDriver();

try {
    br = new BufferedReader(new FileReader("C:\\test.txt"));
        line = br.readLine();
} catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }

    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
   }
   System.out.println("Starting...");

    start(userName, password);
}

  public static void start(String userName, String password) {
    try {
        DatabaseManipulator.getConnection();
        logIntoProducer(userName, password);

        while(line != null){
                System.out.println(driver.manage().getCookies());
        fillInCDNInfo(line);
        line = br.readLine();
        }
          }
    } catch (NoSuchElementException e) {
        System.out.println("No such element exception occurred, closing server");
        e.printStackTrace();

    } catch (ElementNotVisibleException enve) {
        System.out.println("Element not visible, closing server");
        enve.printStackTrace();
    } catch (StaleElementReferenceException see) {
        System.out.println("Old reference, closing server");
        see.printStackTrace();
    } catch (WebDriverException wde) {
        System.out.println("Web driver exception, browser might have been                                   closed. Closing server");
        wde.printStackTrace();

    }
            catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
public static void logIntoProducer(String userName, String password){

    driver.get("https://genericsite.com");
    ((JavascriptExecutor)   driver).executeScript("$('#Password_placeholder').val('').hide();");
    ((JavascriptExecutor) driver).executeScript("$('#Password').val('').show();");

    WebElement query = driver.findElement(By.name("UserName"));

    query.sendKeys(userName);

    query = driver.findElement(By.name("Password"));
    query.sendKeys(password);

    ((JavascriptExecutor) driver).executeScript("SubmitMainForm()");

    waitForSpecifiedMenu(3,"linktext", "Search");
}

 public static void fillInCDNInfo(String affiliateName)
 {

   gotoAffiliateCDNInfoPage(affiliateName);
 }

gotoAffiliateCDNInfoPage公正的电话重要的driver.get("website.com");是要注意,我现在设置这个只是为了测试。而且这个逻辑适用于其他网站。我是这个网站的新手,所以我认为我没有正确设置我的代码块。

4

0 回答 0