2016-07-21 1 views
-2

I followig HTML-Code und wollen X Pfad für den Text "Analytics & Forschung"Wie kann ich meine eigenen XPath aus dem HTML-Code schreiben

<div id="LLCompositePageContainer" class="column-wrapper"> 
    <div id="compositePageTitleDiv"> 
     <h1 class="page-header">Analytics &amp; Research</h1> 
</div> 

Ich erhalte folgende xpath Chrom verwenden, aber das hat nicht funktioniert haben .

//*[@id="compositePageTitleDiv"] 

dies ist mein Code

WebElement header = driver.findElement(By.xpath("//div[@id='LLCompositePageContainer']/div[@id='compositePageTitleDiv']/h1[@class='page-header']"));   

String header2 = header.getText(); 

System.out.println(header2); 

und folgende Fehler Ich

Exception in thread "main" org.openqa.selenium.NoSuchElementException bekommen: Unable Element zu finden, mit xpath == // div [@ id = 'LLCompositePageContainer']/div [@ id = 'compositePageTitleDiv']/h1 [@ class = 'Seitenkopf'] (ACHTUNG: Der Server hat keinen Stacktrace bereitgestellt Dauer oder Timeout Informationen) Befehl: 10,34 Sekunden Für die Dokumentation zu diesem Fehler, besuchen Sie bitte: http://seleniumhq.org/exceptions/no_such_element.html

+0

check this out: http://stackoverflow.com/questions/24212548/how-to-get-the-absolute-xpath-for-an-element-within-firebug –

+0

leider kann ich nicht Firefox oder Firebug wegen fällig zur IT-Richtlinie, danke – Amol1981

+1

Bitte definieren Sie "hat nicht funktioniert", geben Sie Ihren relevanten Code und die Fehlermeldung/Verhalten Sie erhalten. – OCary

Antwort

0

Bitte versuchen Sie die unten XPath zu verwenden:

driver.findElement(By.xpath(".//div[@id='compositePageTitleDiv']/h1")).getText(); 

Wenn das Element innerhalb des iframe ist. Verwenden Sie dann den folgenden Code:

// Switching to the frame 
driver.switchTo().frame(<name>); 

// Storing the value of the Analytics & Research 
String text = driver.findElement(By.xpath(".//div[@id='compositePageTitleDiv']/h1")).getText(); 

// Switching back to original window 
driver.switchTo().defaultContent(); 

Hoffe, das hilft.

+0

Perfekt, es hat funktioniert, Danke. – Amol1981

+0

@ Amol1981, Gern geschehen. Kannst du das bitte als Antwort markieren? –

-1

Die richtige Xpath

//div[@id='LLCompositePageContainer'] 
    /div[@id='compositePageTitleDiv'] 
    /h1[@class='page-header'] 

ist Aber Sie könnten Ihre Antwort leicht mit einigen Erforschungen finden auf google ...

+0

Danke, ich sehe, wie Sie den X-Pfad erstellt haben, habe ich das gleiche, aber das hat nicht funktioniert, kennen Sie Tutorial mit dem ich lernen kann, x Pfad zu schreiben? – Amol1981

0

Dies ist, wie es verwendet werden kann:

WebElement element= driver.findElement(By.xpath("//*[@id='compositePageTitleDiv']")); 

Oder, falls es verschachtelt ist, kann auch

WebElement element = driver.findElement(By.xpath("//html/body/div[3]/div[3]/")); 

dies ist nur eine grobe Syntax wie folgt zugegriffen werden.

+0

Danke, ich kenne die Syntax, aber der x-Pfad, den ich entweder von Chrome bekomme oder der, den ich basierend auf meiner Recherche erstellt habe, hat nicht funktioniert. – Amol1981

+0

das ist ähnlich: http://StackOverflow.com/Questions/2596264/trying-to-create-xpath-from-this-html-snippet?rq=1 –

0

Keine Notwendigkeit, Xpath hier zu verwenden, wenn Sie einfach das Element unter Verwendung By.id() finden konnten. Asuming verwenden Java, sollten Sie wie unten versuchen: -

WebElement el = drive.findElement(By.id("compositePageTitleDiv")); 
String text = el.getText(); 

Herausgegeben: - Wenn das Element nicht gefunden wird, kann es Timing-Probleme ist Sie müssen WebDriverWait implementieren, wie unten, bis auf der Seite sichtbar für Element warten : -

WebDriverWait wait = new WebDriverWait(webDriver, implicitWait); 
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("compositePageTitleDiv"))); 
String text = el.getText(); 

Hinweis: - wenn Ihr Element in jedem Frame ist, müssen Sie diesen Rahmen wechseln, bevor die Suche nach Elemente als: - driver.switchTo().frame("your frame name or id");

Hoffe, es hilft .. :)

+0

nicht Element nach ID finden, unter Fehler erhalten Ausnahme im Thread "main" org.openqa.selenium.NoSuchElementException: Element mit ID == compositePageTitleDiv konnte nicht gefunden werden (WARNUNG: Der Server hat keine Stacktrace-Informationen angegeben) Befehlsdauer oder Timeout: 10,40 Sekunden – Amol1981

+0

@ Amol1981 Sie müssen 'WebDriverWait' implementieren dann, siehe aktualisierte Antwort .. –

Verwandte Themen