1

Facebookにログインし、特定の会社で働く人のリストを取得するために特定のFacebookのURLを開きます(Googleの従業員を取得するなど)私の最初の考えは単純に(正常に動作する)ログインした)https://www.facebook.com/search/str/google/pages-named/employees/present/intersect に移動し、driver.navigateを()を使用して、特定のページにアクセスしてください。()Selenium - ログインして別のページに移動

FirefoxDriver driver = new FirefoxDriver(); 

    driver.get("https://www.facebook.com"); 

    WebElement emailElement = driver.findElementById("email"); 
    WebElement passwordElement = driver.findElementById("pass"); 

    emailElement.sendKeys("[email protected]"); 
    passwordElement.sendKeys("xxxx"); 

    emailElement.submit(); 

    driver.navigate().to("https://www.facebook.com/search/str/google/pages-named/employees/present/intersect"); 

しかし、このように、Facebookページは利用できません。ページが同じブラウザタブで開かれていても、再度ログインするように求められます。

考え直しは、最初にログインクッキーを取得した後、使用することは新しいドライバについては、このクッキーですた。

FirefoxDriver driver = new FirefoxDriver(); 

    driver.get("https://www.facebook.com"); 

    WebElement emailElement = driver.findElementById("email"); 
    WebElement passwordElement = driver.findElementById("pass"); 

    emailElement.sendKeys("[email protected]"); 
    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.selenium .InvalidCookieDomainException:ドキュメントがクッキーを嫌う。

私は間違っていますか?

答えて

1

のようにページを更新するために待機機能を使用する必要があります()を提出し、私はそれがto get a list of people, working for a specific companyにクッキーを保存するために必須であるとは思いません。次のコードブロックは、私の側ではうまく機能:

driver.findElement(By.cssSelector("input[value='Log In']")).click(); 
driver.get("https://www.facebook.com/search/str/google/pages-named/employees/present/intersect"); 
System.out.println(driver.getTitle()); 
driver.quit(); 

コンソール出力:

Facebook Search 
+0

をあなたの提案が働いていた、ありがとう! しかし、私は変更しました driver.findElement(By.cssSelector( "input [value = 'ログイン']"))。 〜 driver.findElementById( "loginbutton")。クリック();入力の値が言語に依存するため、 – ossi

0

最初に考えた適用:Selenium Javaためgeckodriverの設定

は、私が考えて問題を解決します。

それはコード以下のようFirefoxDrivergeckodriverパスを設定する必要があります:あなたに適したOS用

System.setProperty("webdriver.gecko.driver", "PATH/TO/geckodriver.exe"); 
FirefoxDriver driver = new FirefoxDriver(); 

上記sが後あなたが

emailElement.submit();  
//Use WebDriver wait.until() or sleep() to finish the submit action 
driver.navigate().to("https://www.facebook.com/search/str/google/pages-named/employees/present/intersect");