Laden...

driver.FindElement div Class Aufruf?? (Selenium WebDirver)

Erstellt von CarnifeX vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.114 Views
C
CarnifeX Themenstarter:in
48 Beiträge seit 2015
vor 8 Jahren
driver.FindElement div Class Aufruf?? (Selenium WebDirver)

Hallo Zusammen,

ich schreibe gerade ein Screenshotprogram das automatisch auf eine Webseite geht, zu einem bestimmten Punkt navigiert und dann einen Screenshot generiert.

Mein Problem:
Das "navigieren zu diesem Punkt".
Also das aufrufen der Classe via "driver.FindElement".

Der Quellcode der Seite:

<div class="divObject  listitem_new_wrap" estateid="38633370">
            <div class="listitem_new ">
                <a href="/expose/26TWZ4U"><span></span></a>
                <div class="listimage">
                    <span class="color_new"></span>
                    
                    <span class="imagecount"><i class="icon_camera"></i>10</span></div>

Diesen Bereich möchte ich mit driver.FindElement anspringen. Aber ich weiß nicht wie (also die Syntax) Ich habe schon einiges außprobiert. z.B.:
driver.FindElement(By.CssSelector("listitem_new")).Click();

Kann mir jemand weiterhelfen?

Danke im Voraus 😃

16.828 Beiträge seit 2008
vor 8 Jahren

Welche Programmiersprache soll das Ziel sein?
FindElement gibt es weder in JavaScript noch in C#

C
CarnifeX Themenstarter:in
48 Beiträge seit 2015
vor 8 Jahren

In C#
In verbindung mit dem Selenium Webdriver gibt es FindElement.

742 Beiträge seit 2005
vor 8 Jahren

Das ist kein CSS Selector, ganz einfach 😉

http://wiki.selfhtml.org/wiki/CSS/Selektoren

C
CarnifeX Themenstarter:in
48 Beiträge seit 2015
vor 8 Jahren

@malignate Wie rufe ich es dann auf?

742 Beiträge seit 2005
vor 8 Jahren

Entweder

By.CssSelector(".listitem_new")

  • oder -

By.ClassName("listitem_new")

C
CarnifeX Themenstarter:in
48 Beiträge seit 2015
vor 8 Jahren

Danke schon mal für die Antwort.
Ich bekomme schon mal keine Fehlermeldung mehr. Dennoch wird nicht zu der seite navigiert.


driver.FindElement(By.CssSelector(".listitem_new")).Click();

Mir kommt es so vor als würde der Code noch ignoriert werden. Oder als würde er das Element zwar finden aber nicht anspringen.

L
13 Beiträge seit 2013
vor 8 Jahren

Ich habe jetzt keine Ahnung wie er nach dem CssSelector sucht, aber in deinem Beispielcode oben hast du ein Leerzeichen nach dem Klassennamen. Vielleicht liegt es einfach nur daran.

C
CarnifeX Themenstarter:in
48 Beiträge seit 2015
vor 8 Jahren

Danke für den Tipp, aber daran liegt es leider auch nicht.
Bei vorherigen Element-Aufrufen hat alles wunderbar funktioniert:


driver.FindElement(By.Name("ctl00$MainContent$dts$txtType")).SendKeys("Wohnung mieten");
                driver.FindElement(By.Name("ctl00$MainContent$dts$txtLocation$txtLocation")).SendKeys("90411" + Keys.Enter);

Doch bei dem jetztigen Aufruf des Div-Containers / Css klappt es irgendwie nicht.
Ich habe schon etliche Variationen des Codes ausprobiert, aber keiner funktioniert.

driver.FindElement(By.ClassName("listitem_new")).SendKeys(Keys.Enter);
driver.FindElement(By.ClassName("listitem_new")).Click();
driver.FindElement(By.Name("listitem_new")).Click();
driver.FindElement(By.CssSelector(".listitem_new")).Click(); 

usw.....

3.170 Beiträge seit 2006
vor 8 Jahren

Hallo,

wenn's nicht funktioniert, vermute ich, dass Du einfach versuchst auf das falsche Element zu "clicken".
Sicher dass <div class="listitem_new "> der richtige Kandidat ist?

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

C
CarnifeX Themenstarter:in
48 Beiträge seit 2015
vor 8 Jahren

@MarsStein danke!
Ich bin alles nochmal durchgegangen und mir ist aufgefallen dass das

 <a href="/expose/26TWZ4U"><span></span></a> 

aufgerufen werden muss. Dies funtkioniert mit:


driver.FindElement(By.CssSelector("a[href*='expose']")).Click();  

-> Gelöst!