2017-09-20 13 views
-1

昨日まで下記のコードがうまくいきましたが、今は問題に直面しています。 コードはfirefoxブラウザを開き、facebook.comを読み込みますが、コードはウェブブラウザにメールとパスワードを送信しません。つまり、sendkeys()は動作しません。 電子メールとパスワードの両方のテキストボックスのIDが正しいことを確認しましたが、コードは正しく機能していません。セレンのwebdriverでsendkeys()が動作しません

import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.WebDriver; 

import java.util.concurrent.TimeUnit; 

import org.openqa.selenium.By; 
import org.openqa.selenium.JavascriptExecutor; 
public class Webdriver2 { 

    WebDriver driver ; 
    JavascriptExecutor jse; 
    public void invokeBrowser() 
    { 
     try 
     { 
     System.setProperty("webdriver.gecko.driver","C:\\geckodriver-v0.19.0-win64\\geckodriver.exe"); 
     driver = new FirefoxDriver(); 
     driver.manage().deleteAllCookies(); 
     driver.manage().window().maximize(); 
     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
     driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS); 


     driver.get("https://www.facebook.com/"); 
     search(); 
     } 
     catch (Exception e) { 
      // TODO: handle exception 
      e.printStackTrace(); 
     } 

    } 
    public void search() 
    { 
     try 
     { 
     driver.findElement(By.id("email")).sendKeys("[email protected]"); 
     Thread.sleep(4000); 
     driver.findElement(By.id("pass")).sendKeys("password"); 
     Thread.sleep(4000); 
     driver.findElement(By.id("u_0_2")).click(); 
     Thread.sleep(4000); 
     /*driver.findElement(By.name("q")).sendKeys("spit mumbai"); 
     Thread.sleep(4000); 
     driver.findElement(By.xpath(" //button[@aria-label='Search' and @data-testid='facebar_search_button'] ")).click();*/ 

     } 
     catch(InterruptedException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Webdriver2 w = new Webdriver2(); 
     w.invokeBrowser(); 
    } 
} 
+0

あなたはすべてのエラーを取得していますか? –

+0

コードは変更されず、geckodriverは変更されません。私は2つの理由が考えられます:1)あなたのfirefoxがアップグレードされました.2)sendKeysの前にこの追加の待ち時間を追加する必要があります。ほとんどの時間で以前にページロードタイムアウト30秒と暗黙のうちに30秒)がありましたが、現在FaceBookホームページが遅くなったり、ネットワークが遅くなったりします。 – yong

答えて

1

は、あなたがのSendKeys実行する前に2つのテキストボックスをクリックしてください:

driver.findElement(By.id("email")).click(); 
driver.findElement(By.id("email")).sendKeys("[email protected]"); 

テキストボックスを、おそらくフォーカスを必要とします。

+0

回答を投稿する際のフォーマットガイドラインをご覧ください。テキストをコードとして書式設定するには、行を4つのスペースでインデントするだけで済みます。 >文字は通常、引用符ではなく、コードではなくエラーメッセージでもあります。私はあなたもそれを見てみることができるようにあなたのための書式を修正しました。 – JeffC

0

は、我々は次のようにここでは物事のカップルの世話をする必要があります:私たちはロケータを選択しながら、これを考慮する必要がありますので、

  1. Email or Phoneフィールドは<input>タグ内にあります。
  2. フィールドも<input>タグ内にあるため、ロケータを選択する際に考慮する必要があります。
  3. Log Inボタンのidが動的であり、また<input>タグ内にある場合は、この要素も考慮する必要があります。ここで
  4. Email or PhonePasswordを提供し、URL https://www.facebook.com/にアクセスするためにcssSelectorを使用して最小サンプルコードブ​​ロックで、最終的にはLog Inボタンをクリックしてください:

    package demo; 
    
    import org.openqa.selenium.By; 
    import org.openqa.selenium.WebDriver; 
    import org.openqa.selenium.firefox.FirefoxDriver; 
    
    public class Facebook_Login_CSS_FF { 
    
        public static void main(String[] args) { 
    
    
         System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe"); 
         WebDriver driver = new FirefoxDriver(); 
         driver.get("https://www.facebook.com/"); 
         driver.findElement(By.cssSelector("input#email")).sendKeys("Ryusei"); 
         driver.findElement(By.cssSelector("input[name='pass']")).sendKeys("Nakamura"); 
         driver.findElement(By.cssSelector("input[value='Log In']")).click(); 
        } 
    
    } 
    
+0

@RyuseiNakamura私の答えはあなたの質問を解決しましたか? – DebanjanB

関連する問題