2017-05-14 4 views
0

JavaでSeleniumのコードを実行しようとしているときに、このエラー「ポインタアクションの型引数が見つからないか無効です」が表示されます。JavaエラーのSelenium:ポインタアクションの型引数が見つからないか無効です

public static void main(String args[]) throws InterruptedException 
{ 
    WebDriver driver = new FirefoxDriver(); 
    driver.get("https://www.flipkart.com/"); 

    driver.findElement(By.xpath(".//*[@class='_3Ji-EC']/li[8]/a")).click(); 

    WebElement elem = driver.findElement(By.className("_2zrpKA")); 
    elem.sendKeys("ABC"); 

    WebElement elem2 = driver.findElement(By.xpath(".//*[@class='_2zrpKA 
    _3v41xv']")); 
    elem2.sendKeys("XYZ"); 

    driver.findElement(By.xpath(".//*[@class='_2AkmmA _1LctnI 
    _7UHT_c']")).click(); 

    System.out.println("Success"); 

    //driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    Thread.sleep(5000); 
    WebElement elem3 = driver.findElement(By.xpath(".//*[@class='_3Ji- 
    EC']/li[7]/a")); 
    System.out.println("success"); 
    Actions action = new Actions(driver); 
    action.moveToElement(elem3).build().perform(); 
    driver.findElement(By.xpath(".//*[@class='_1u5ANM']/li[9]/a")).click(); 
} 

私は、最新のgeckodriver 16.1と16.0とセレン3.4.0とFirefox 51.x、52.x、53.xを使用して、これを試してみました。 Firefox 53.xを使用していたときに、「ポインタアクションの型引数が見つからないか無効です」というエラーが表示されるたびに、「期待される[オブジェクト未定義]を文字列として定義していません」エラーが発生しました。

上記のコードでは、「成功」は2回目に問題なく印刷できますが、その後はエラーが発生しています。ここで

+0

この行はエラーを示していますか? –

+0

最後の3行。私は私のコンソールに最後の4行目に書いた "成功"を見ることができます。 –

+0

クローム58.xクロムドライバー2.28&セレン3.4で私のためにうまく動作します。0 – kushal

答えて

0

は、あなたの質問を解決する:

System.setProperty("webdriver.gecko.driver", "C:\\your_directory\\geckodriver.exe"); 
:として、あなたのコード内で geckodriverの絶対パスを指定する必要が geckodriver v0.16.1 &のMozilla Firefoxの53.xで Selenium 3.4.0で動作するように

  1. あなたのxpathは私には脆弱だと思われます。もっとユニークな論理xpathを構築したいかもしれません。あなたが行うことLog Inボタンをクリックしてください:

    driver.findElement(By.xpath("//div[@class='AsXM8z']/ul/li/a[@class='_2k0gmP'][text()='Log In']")).click(); 
    
  2. は、私はあなたが、唯一のクラスに依存しているいくつかのより多くのプロパティを追加しないことをお勧め。 Enter Emailフィールドのxpathができ:

    WebElement elem = driver.findElement(By.xpath("//input[@class='_2zrpKA']")); 
    
  3. Enter PasswordのXPathがユニークではありません、あなたはそれを変更することがあります。

    WebElement elem2 = driver.findElement(By.xpath("//input[@class='_2zrpKA _3v41xv']")); 
    
  4. LoginボタンのXPathは、ユニークである必要があります次のようにかなり使用Thread.sleep(5000);を使用して

    driver.findElement(By.xpath("//button[@class='_2AkmmA _1LctnI _7UHT_c']")).click(); 
    
  5. 回避をユーザー名をクリックする10かExplicitWait

  6. xpathが再び脆弱である、あなたはそれを変更することがあります。

    WebElement elem3 = driver.findElement(By.xpath("//div[@class='AsXM8z']/ul/li/a[@class='_1AHrFc _2k0gmP']")); 
    
  7. Log Outボタンをクリックするために、XPathは、あなたがしたいことがあり、再び脆弱です

    driver.findElement(By.xpath("//div[@class='_1H5F__']/div/ul/li/ul/li/a[@class='_2k0gmP'][text()='Log Out']")).click(); 
    
  8. ここでは、いくつかの簡単な調整がある独自の作業コードブロックがあります。

    System.setProperty("webdriver.gecko.driver", "C:\\your_directory\\geckodriver.exe"); 
    
    WebDriver driver = new FirefoxDriver(); 
    driver.get("https://www.flipkart.com/"); 
    
    driver.findElement(By.xpath("//div[@class='AsXM8z']/ul/li/a[@class='_2k0gmP'][text()='Log In']")).click(); 
    
    //Email 
    WebElement elem = driver.findElement(By.xpath("//input[@class='_2zrpKA']")); 
    elem.sendKeys("[email protected]"); 
    
    //Password 
    WebElement elem2 = driver.findElement(By.xpath("//input[@class='_2zrpKA _3v41xv']")); 
    elem2.sendKeys("pass_word"); 
    
    //Login Button 
    driver.findElement(By.xpath("//button[@class='_2AkmmA _1LctnI _7UHT_c']")).click(); 
    
    System.out.println("Success"); 
    
    //driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    Thread.sleep(5000); 
    
    //Click on Name 
    WebElement elem3 = driver.findElement(By.xpath("//div[@class='AsXM8z']/ul/li/a[@class='_1AHrFc _2k0gmP']")); 
    System.out.println("success"); 
    Actions action = new Actions(driver); 
    action.moveToElement(elem3).build().perform(); 
    driver.findElement(By.xpath("//div[@class='_1H5F__']/div/ul/li/ul/li/a[@class='_2k0gmP'][text()='Log Out']")).click(); 
    

これは、あなたの質問に答えるなら、私に教えてください。

+0

ありがとうございます。これにより、Firefoxでコードを実行できるようになりました。 提案に感謝します。私は次回にそれらを覚えています。 –

+0

@RiteshGupta素晴らしいニュース:)私が助けることができてうれしい。 – DebanjanB

関連する問題