2017-06-26 6 views
0

Es gibt viele Span-Tags wie in der Abbildung unten erwähnt und jedes hat sein eigenes a-tag mit einer eindeutigen ID als "choucheitem". Ich muss ein bestimmtes Tag unter Verwendung von Namen in den span-Tags auswählen.Wie klickt man ein Element mit Bezug auf ein anderes Webelement in Selenium WebDriver (Java)?

Need to click the a-tag button using the text Mayo Chicken

Sie möchten die a-Tag-Schaltfläche mit dem Text Mayo Huhn aus dem obigen HTML-Schnipsel in dem Bild klicken.

Ich habe die unten Selenium-Skript versucht

WebElement select = driver.findElement(By.xpath("//*[contains(text(),'Mayo Chicken (Single)')]")); 
WebElement add = select.findElement(By.id("chooseitem")); 

Es ist nicht für mich arbeiten.

driver.findElement(By.id("chooseitem")); 

Der obige Code wählt den ersten Eintrag in der Seite standardmäßig als auch seine ID ist ‚chooseitem‘, sondern müssen definieren, was ausgewählt werden.

Kann mir jemand helfen?

+1

Können Sie versuchen mit diesem xpath - "// span [enthält (Text(), 'Mayo Chicken')]/Ahnen :: div [4] // a". Können Sie die URL der Website geben –

+0

können Sie nicht Daten-Pkey verwenden? Wie: String xpath = "// * [@ data-pkey = '.....']"; WebElement select = driver.findElement (By.xpath (xpath)); – Sirim

+0

@santhoshkumar Vielen Dank! Es funktioniert jetzt. Kannst du mir irgendeinen Link mitteilen, um Vorfahren besser zu verstehen? – Sugan

Antwort

1

Wir müssen die gemeinsamen übergeordneten (Vorfahre) Element des chicked und der klickbare 'ein' Tag bekommen, wir dann kann zum Tag 'a' navigieren. Unterhalb von XPath sollte idealerweise funktionieren.

"//span[contains(text(),'Mayo chicken')]/ancestor::div[4]//a" 

Hinweis: Hier habe ich verwendet, div [4], weil vierte Elternteil ist der gemeinsame Vorfahr für 'Mayo Huhn' und Tag 'a'.

Für weitere Informationen über die verschiedenen XPath Achse verweisen this->https://www.w3schools.com/xml/xpath_axes.asp

Hope this Ihnen hilft. Vielen Dank.

0

Sie können dies tun, indem Sie die Xpath-Position verwenden, drücken Sie F12 für Entwickler-Tools klicken Sie auf "Element Schaltfläche auswählen", klicken Sie auf das Element, das Sie auf der Seite interessiert, wie in Ihrem Bild sehen Sie eine oder mehrere Zeilen markiert, Rechtsklicke die Linie -> Kopieren -> XPath kopieren. Im Folgenden finden Sie so etwas wie die Linie haben:

//*[@id="comment-76500216"]/td[2]/div/span[1] 

XPath Lage sein wird:

//td[2]/div/span[1] 

Sie können das verwenden, wenn Sie mehrere Elemente aufweisen, die den Namen oder die ID-teilen oder so weiter.

Und Sie haben:

WebElement select = driver.findElement(By.xpath("//td[2]/div/span[1]")); 

PS: Ich habe Google Chrome

Verwandte Themen