2017-06-07 8 views
0

Amazonのサイトに対してセレンテストを作成しようとしています。私はそれをクリックすることができるように "サインイン"要素を取得したいです。セレンxpath:要素がAmazonサイトで表示されない

URL:

driver.findElement(By.xpath("//a[@data-nav-role='signin']")).click(); 

しかし、私はElement not visible例外を取得:www.amazon.ca

は、ここに私のセレンコードです。

私は要素検索の前にThread.sleep(5000)を置いてみましたが、それでも同じ問題がありました。

私は要素を選択する他の方法がありますが、なぜこのXpathが自分のコードで機能していないのかを知りたいのですが。

注:クロームDevToolコンソールでそれをしようとすると、それが正常に動作します$x("//a[@data-nav-role='signin']")

+1

はこれを試してみてください - driver.findElement(By.xpath( '// a [@ data-nav-role = 'サインイン'] [1] ')) – Ankur

答えて

2

あなたが戻って複数の要素、すなわち3を選択したセレクタあなたがfindElements代わりのfindElementを使用していることを確認することができます。

クリックする特定の要素の正確なセレクタを指定するか、またはfindElementsを使用して一致する要素をすべて取得し、それらをループして一致する属性を持つ要素をクリックするなどしてください。テキスト。

試してみてください。

driver.findElement(By.id("nav-link-yourAccount")).click(); 
0

私はサイトをチェックして、ボタンでの符号が見えるようにする前に、我々はメニューにマウスオーバーする必要があります。以下のコードはあなたにいくつかのアイデアを与えるかもしれません。

//Mouse over to the menu 
Actions action = new Actions(webdriver); 
WebElement we = webdriver.findElement(By.xpath("//*[@id=\'nav-link-yourAccount\']/span[1]")); 
action.moveToElement(we).build().perform(); 
//Now perform sign in button clicking action since its visible now 

希望します。ありがとう。

0

XPathをクリックしてください:

// [ID = 'NAV-リンクyourAccount' @] /スパン

関連する問題