2016-10-17 20 views
-1

可能なすべての要素ロケータを試しましたが、ログインに成功した後、コードをクリックして、クリックしたい要素をクリックします。私はエラーを次取得:ログインに成功した後、Selenium webdriverスクリプトで任意の要素をクリックすることはできません

...

class charSequence { 
    String str1="[email protected]"; 
    String str2= "abcdfghhh"; 
    CharSequence cs1 = "int1"; 
    CharSequence cs2 = "int2"; 
    //boolean retval; 
    public charSequence(String str){} 
} 

public class QueuedRefund { 
    public static void main(String[] args) {  
     String[] temp1 = new String[1]; 
     String[] temp2 = new String[1]; 
     charSequence s1 = new charSequence("str1"); 
     charSequence s2 = new charSequence("str2"); 
     temp1[0]=s1.str1; 
     temp2[0]=s2.str2; 

     System.setProperty("webdriver.gecko.driver","/home/srvmedia/Geckodriver /geckodriver"); 
     WebDriver driver = new FirefoxDriver(); 
     driver.get("https://dadfd.mywebsite.in/merchant/login"); 
     driver.findElement(By.name("email")).sendKeys(temp1); 
     driver.findElement(By.name("password")).sendKeys(temp2); 
     driver.findElement(By.id("loginForm")).submit(); 
     //driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

     driver.findElement(By.xpath("html/body/div[6]/div/div/div[1]/div[1]/div[2]/div/a[1]/div")).click(); 

     //driver.findElement(By.xpath("//div[2]/div/a/div")).click(); 

    } 

} 
+0

だからどこにエラーがありますか? – JDelorean

+0

あなたはどの要素をクリックしようとしていますか?要素をクリックする前に、要素が表示されるまで待つ必要があります。 – Moser

答えて

0

(1)あなたの質問は言う:コードを正常にログインした後、私はそれをクリックする要素をクリックすることができません。 (2) "nosuchelementexception"タグを使用しています。 driver.findElement(By.xpath( "html/body/div [6]/div/div/div [1]/div [1])これらの2つの事実に基づいて、/div [2]/div/a [1]/div "))をクリックします。

質問を理解し、エラーメッセージを投稿してください上記私の前提を確認すると役立ちます。

あなたの質問に対する回答は、使用している要素ロケータ(xpath)が正しいかどうかによって異なります。私はあなたがおそらくnosuchelementexceptionを得ているので、xpathが正しくないと推測しています。

FirefoxブラウザでFirePathアドオンを使用して、xpathが正しいかどうかを確認できます。それをインストールした後、 "Firepath"という名前の最後のタブにxpathを入力し、Enterキーを押します。対応する要素(クリックしたい要素)が強調表示されます。そうでなければ、xpathはそれがすべきものではありません。

クリックしたい要素がそのページの別のフレームにあるかどうかを確認することもできます。その場合は、最初にそのフレームに切り替える必要があります。そのページに異なるフレームがありますか? Firepathを使ってこれを見ることもできます。

xpathが正しいことを確認している(そしてFirepathの使用を確認している)場合は、その要素が有効で、そのページのソースごとに表示されているかどうかを確認してください。

Webelement element = driver.findElement(By.xpath("xpath_of_that_element")); 
System.out.println("The element is enabled: " + element.isEnabled()); 
System.out.println("The element is displayed: " + element.isDisplayed()); 

私は、上記の2つのprint文の少なくとも1つに「false」と表示されていると推測しています。

xpathが正しく、2つ以上の印刷ステートメントが 'true'を表示している場合、WebElementのgetText()メソッドを使用して、そのWebElement(クリックしたい)上にテキストを印刷してみます。それは成功するか?あなたはおそらくノーシュシェル・エリート例外を取得しているので、そうは思わないでしょう。

注:取得している例外がnosuchelementexceptionでない場合は、そのタグを質問から削除できます。

関連する問題