java Selenium登录并导航到其他页面
我想登录facebook,然后打开一个特定的facebook url,以获取为特定公司工作的人员列表(例如,要获取谷歌的员工,我需要转到https://www.facebook.com/search/str/google/pages-named/employees/present/intersect )我的第一个想法是简单地登录(这很好),然后使用驱动程序进入特定页面。导航()。to()
FirefoxDriver driver = new FirefoxDriver();
driver.get("https://www.facebook.com");
WebElement emailElement = driver.findElementById("email");
WebElement passwordElement = driver.findElementById("pass");
emailElement.sendKeys("xxxx@xxxx.com");
passwordElement.sendKeys("xxxx");
emailElement.submit();
driver.navigate().to("https://www.facebook.com/search/str/google/pages-named/employees/present/intersect");
然而,这样一来,facebook页面就不可用了,我会被提示再次登录,即使该页面是在同一个浏览器选项卡中打开的
第二个想法是先登录,获取cookie,然后将此cookie用于新驱动程序:
FirefoxDriver driver = new FirefoxDriver();
driver.get("https://www.facebook.com");
WebElement emailElement = driver.findElementById("email");
WebElement passwordElement = driver.findElementById("pass");
emailElement.sendKeys("xxxx@xxxx.com");
passwordElement.sendKeys("xxxxx");
emailElement.submit();
Set<Cookie> cookies = driver.manage().getCookies();
FirefoxDriver driver2 = new FirefoxDriver();
for (Cookie cookie : cookies) {
Cookie cookieNew = new Cookie.Builder(cookie.getName(), cookie.getValue()).expiresOn(cookie.getExpiry())
.isHttpOnly(cookie.isHttpOnly()).isSecure(cookie.isSecure()).path(cookie.getPath()).build();
driver2.manage().addCookie(cookieNew);
}
driver2.get("https://www.facebook.com/search/str/google/pages-named/employees/present/intersect");
}
然而,这样就会抛出一个异常:org。openqa。硒。InvalidCookieDomainException:文档不喜欢cookie
我做错了什么
# 1 楼答案
应用第一个想法:
为
Selenium Java
设置geckodriver
解决了我认为的问题它需要用
FirefoxDriver
设置geckodriver
路径,如下代码:提交()后,需要使用等待功能刷新页面,如
# 2 楼答案
我不认为必须将cookies存储到
to get a list of people, working for a specific company
。下面的代码块在我这边运行良好:控制台输出: