Finden element Selen mit Hilfe von XPATH-oder CSS-Selektor
Ich m versuchen zu finden, die das element "import" mit Selenium Webdriver in C#. Habe versucht die folgenden codes, aber nichts finden.
driver.FindElement(By.XPath("//*[@class='menu_bg']/ul/li[3]")).Click();
driver.FindElement(By.XPath("//*[@id='import']/a")).Click();
driver.FindElement(By.CssSelector("#import>a")).Click();
driver.FindElement(By.XPath("//*[@class='menu_bg']/ul/li[3]/a")).Click();
driver.FindElement(By.CssSelector("ul[@class='menu_bg']>li[value='3']")).Click();
Bitte helfen Sie mir. Design-Seite sieht wie folgt aus:
<body>
<div class="header_bg"></div>
<div class="menu_bg">
<ul class="menu">
<li id="retrieve"></li>
<li id="scan" class="test"></li>
<li id="import">
<a target="main" href="import/import.aspx" onclick="clickme(this,'import')">Import</a>
</li>
<li id="admin"></li>
<li id="help"></li>
<li style="float: right;"></li>
</ul>
</div>
</body>
Ganze Zeit ich habe den Fehler wie folgt:
unable to find the element
Einen Versuch geben für: - Treiber.FindElement(By.XPath("//li[@id='import']/a")).Klicken Sie();
Sie können auch versuchen: - Treiber.FindElement(By.id("import")).Klicken Sie();
Sie können auch versuchen: - Treiber.FindElement(By.id("import")).Klicken Sie();
InformationsquelleAutor Aruna | 2014-06-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
XPath-Indexer sind 1-basiert, im Gegensatz zu den meisten anderen Sprachen, wobei Sie sind 0-basiert.
Bedeutet dies, dass Sie tatsächlich welche auf die 2.
li
element, das keineanchor
element.Also:
Jedoch, diese XPath-Abfrage ist nicht so toll und ist zu streng auf position - obwohl diese neu festgelegt XPath oben sollte arbeiten, würde ich Ihnen raten, an etwas anderes zu denken.
Vielen Dank für Ihren Vorschlag. Aber ich bekam die folgende Fehlermeldung - Unable to find element mit xpath == //*[@class='menu_bg']/ul/li[3]/a
Bitte lassen Sie mich wissen, die anderen Lösungen...
InformationsquelleAutor Arran
Durch die überprüfung dieser link(Dank an @Arran), das oben genannte Problem wurde behoben. 'Wechsel', um die aktuelle IFrame leitet das Selen, um zu zeigen, alle Anfragen zu diesem Bild statt.
InformationsquelleAutor Aruna
Können Sie dies durch Verkettung Selen 'FindElement' wie so;
driver.FindElement(By.Id("import")).FindElement(By.TagName("a"));
die geben Sie das child-element des Elements mit der ID, die ein tag von 'a'.
Andere Weise, die Sie tun können, diese ist durch Gießen Ihre
Driver
zu einemIJavascriptExecutor
und ausführen von javascript direkt im browser über einen JQuery-Selektor. Ich finde das besser für komplexere Selen nachschauen;((IJavascriptExecutor)Driver).ExecuteScript("$("a[target='main'][href='import/import.aspx'])").click();
InformationsquelleAutor Dillanm