2017-06-07 4 views
0

Ich versuche, einen Selenium-Test gegen Amazon Website zu schreiben. Ich möchte das Element "Anmelden" erhalten, damit ich darauf klicken kann.Selen xpath: Element nicht sichtbar auf Amazon-Website

url: www.amazon.ca

Hier ist mein Selen-Code:

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

Aber ich bekomme Element not visible Ausnahme.

Ich habe versucht, Thread.sleep(5000) vor Element suchen, aber immer noch das gleiche Problem.

Ich habe andere Möglichkeiten, um das Element auszuwählen, aber ich möchte herausfinden, warum dieser Xpath in meinem Code nicht funktioniert.

Hinweis: Wenn es in Chrome DevTool Konsole versucht, es funktioniert dort feine $x("//a[@data-nav-role='signin']")

+1

Versuchen Sie, diese - driver.findElement (By.xpath ('// a [@ data-nav-role = 'signin'] [1] ')) – Ankur

Antwort

2

Der Selektor Sie kehrt mehrere Elemente ausgewählt haben d 3. Sie können überprüfen, ob durch findElements statt findElement verwenden.

Sie können entweder einen präzisen Selektor für das spezifische Element angeben, auf das Sie klicken möchten, oder Sie können alle übereinstimmenden Elemente mit findElements abrufen, sie durchlaufen und dann mit einem passenden Attribut z. Text.

Versuchen:

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

Ich habe die Website überprüft und wir müssen das Menü der Maus über die vor sichtbar das Zeichen in Schaltfläche machen. Der folgende Code könnte Ihnen eine Idee geben.

//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 

Hoffe das hilft Ihnen. Vielen Dank.

0

Versuchen Sie auf XPath:

// a [@ id = 'nav-link-yourAccount']/span

Verwandte Themen