2017-03-20 11 views
1

以下は、テキストボックスにキーを送信していないコードですが、カーソルがテキストボックス内で点滅している間、正しい要素が見つかります。sendKeys()メソッドがキーを送信していません

public class cl01 { 
public static void main(String[] args) { 
    System.setProperty("webdriver.gecko.driver","C:\\Program Files\\Java\\geckodriver-v0.14.0-win32\\geckodriver.exe"); 
    WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.rediff.com/"); 
    String P1 = driver.getWindowHandle(); 
    System.out.println(P1); 

    Set<String> windows = driver.getWindowHandles(); 
    Iterator<String> W = windows.iterator(); 

    while(W.hasNext()) 
    { 
     String C1 = W.next(); 
     System.out.println(C1); 
     if(!P1.equalsIgnoreCase(C1)) 
     { 
      driver.switchTo().window(C1).close(); 
     } 
    } 
    driver.switchTo().window(P1); 

    System.out.println("web page opened"); 

    //Browser's position is set 
    driver.manage().window().setPosition(new Point(30, 40)); 
    int height = driver.manage().window().getSize().getHeight(); 
    System.out.println("height of the browser is " +height); 

    int width = driver.manage().window().getSize().getWidth(); 
    System.out.println("width of the browser is " +width); 

    driver.manage().window().maximize(); 

    driver.findElement(By.linkText("Create a Rediffmail account")).click(); 
    System.out.println("sign up link opened"); 
    driver.findElement(By.xpath(".//*[@id='wrapper']/table[2]/tbody/tr[3]/td[3]/input")).sendKeys("ABC"); 
+0

?あなたのコードで見つけることができません。ああ、ちょうどそれを最後に見た。私はあなたが間違った要素を持っていると思うし、あなたはそれが正しいと思うだけです。 sendKeysは何年も前から非常に安定しています。私はあなたの解釈が間違っていると思います。コードは正確に行う必要があります –

+1

私はあなたがrediff.comにアクセスしようとしていることを理解しています。あなたが私にあなたを助けることができるようにHTML DOMを私に提供できますか?質問内のDOMを更新してください。 – DebanjanB

答えて

2

コードはわかりやすく表示されます。ロードが遅く、最初の要素の待機を追加する必要があるかもしれません。

このような場合、特にネストされたレイヤーが深く、インデックスに頼っている場合は、XPathを使用しないでください。それは非常に脆いロケータになります。私は以下のようなCSSセレクタを使用します。

By.cssSelector("input[name^='name']") 

私はこれをテストしてくれました。基本的には、「名前」で始まる名前を持つINPUTタグを探しています。名前は自動的に生成された文字列のように見えますが、この部分はページ上で一意です。

CSSセレクタについては、いくつか参考にしてください。 CSSセレクタは本当に強力で、学習には時間がかかります。あなたが鍵を送ってください

CSS Selectors Reference

CSS Selectors Tips

+0

xpathメソッドを明示的に待機して使用しましたが、xpathが正しい場合でも、このxpathが機能しない理由がわかりません。私は次のコードを使用しました: 'WebDriverWait wait = new WebDriverWait(driver、15); \t \t wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(by table /..// following :: tr/td/input [@ name = 'name9e6f78ab'] ")))); \t \t driver.findElement(By.xpath( "// table /..// following :: tr/td/input [@ name = 'name9e6f78ab']"))。sendKeys( "ABC"); ' –

+0

私はあなたのコードを実行する、それは私のために正常に動作します。 :)私は 'cssSelector'を学ぶことができる場所から私を提案できますか? –

+0

私は答えを更新し、いくつかのリンクを追加しました。 – JeffC

関連する問題