1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Ausgabe eines Wertes eines Webelements

Dieses Thema im Forum "Support & Discussion" wurde erstellt von DaSHiFTeR, 18. August 2017.

  1. DaSHiFTeR

    DaSHiFTeR Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    38
    Zustimmungen:
    5
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Beruf:
    Key-Account-Manager
    Ort:
    Köln
    Hallo Community,
    ich habe da ein Probleme bei dem ich nicht weiter weiß und hoffe, dass mir einer von Euch weiterhelfen kann.

    Hier ein Bild:
    http://prntscr.com/g956yu

    Kurz noch eine Info: Ich nutze Selenium.
    Ich möchte mir gerne die Werte des Elements ausgeben lassen und mit diesen rechnen.
    Dies habe ich schon auf verschiedenste Arte und Weise versucht.
    Leider bisher ohne Erfolg.

    Der Quellcode gibt Folgendes her:

    rot: <td id="premium_exchange_stock_wood" class="center">1098592</td>
    blau: <td id="premium_exchange_capacity_wood" class="center">1100628</td>
    grün: <td id="premium_exchange_sell_wood" class="center">

    rot XPath: .//*[@id='premium_exchange_stock_wood']
    blau XPath: .//*[@id='premium_exchange_capacity_wood']
    grün Xpath: .//*[@id='premium_exchange_sell_wood']/div[1]/input


    Ich möchte folgendes berechnen:

    Wenn Vorrat Holz < Kapazität Holz
    dann rechne Kapazität Holz - Vorrat Holz
    dann trage Ergebnis aus Kapazität Holz - Vorrat Holz in Rohstoffe verkaufen ein
    dann klicke Verkaufen

    Folgendes habe ich schon versucht:

    CSS-Selektoren
    XPath
    Attribute
    und eig. allem, was hier noch so im Bild der Seite zu sehen ist:
    http://toolsqa.com/selenium-webdriver/webelement-commands/


    Ich möchte hier bitte keinen kompletten Code haben, sondern erst mal nur weitere Denkanstöße die mir evtl. weiterhelfen.
    Wie z.B. mit welchem Befehl ich es noch versuchen soll.
    Mit welchen Befehlen würdet Ihr diese Problematik lösen?

    Danke für Eure Hilfe.
     
  2. SilverHazard

    SilverHazard Moderator Mitarbeiter Moderator

    Registriert seit:
    2. Juli 2017
    Beiträge:
    56
    Zustimmungen:
    44
    Punkte für Erfolge:
    18
    Geschlecht:
    männlich
    Welchen Code hast du denn bisher und woran genau scheitert es denn?

    Der X-Path sieht prinzipiell gut aus, du solltest an die Elemente kommen können.

    Die Berechnung ist noch etwas seltsam... Wenn dein Lager weniger als halb voll ist, verkaufst du mehr, als du tatsächlich hast. Wenn das Lager fast voll ist, wird fast gar nichts verkauft.
     
    DaSHiFTeR gefällt das.
  3. DaSHiFTeR

    DaSHiFTeR Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    38
    Zustimmungen:
    5
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Beruf:
    Key-Account-Manager
    Ort:
    Köln
    Die Rechnung ist richtig ;)
    Die Rechnung bezieht sich auf den Bestand eines anderen Lagers.
    Wenn das andere Lager nicht voll ist, möchte ich gerne Rohstoffe hin schicken.

    Ich habe so viele Möglichkeiten ausprobiert, die habe ich alle gar nicht mehr parat.
    Ich kann hier den letzten Code senden, bei dem ich aufgehört habe:

    Code (Text):
            private void Test_Click(object sender, EventArgs e)
            {
                double v, k, rv;
                v = driver.FindElement(By.XPath("//*[@id='e_s_w']")).GetAttribute(value);
                k = driver.FindElement(By.XPath("//*[@id='e_c_w']")).GetAttribute(value);
                if (v < k)
                {
                    rv = k - v;
                    driver.FindElement(By.XPath("//*[@id='e_s_w']/div[1]/input")).SendKeys(rv);
                    driver.FindElement(By.XPath("//*[@id='e']/div/div[2]/button[1]")).Click();
                }
            }
     
  4. SilverHazard

    SilverHazard Moderator Mitarbeiter Moderator

    Registriert seit:
    2. Juli 2017
    Beiträge:
    56
    Zustimmungen:
    44
    Punkte für Erfolge:
    18
    Geschlecht:
    männlich
    Ich glaube, dass du hier nicht das value-Attribut sondern den Text des Elements brauchst (dürfte [tt].text()[/tt] oder ähnlich sein).

    Wenn das nicht funktioniert, versuche bitte, das genau Problem (element nicht gefunden, du kommst nicht an den Wert, die Rechnung funktioniert nicht,...) genauer zu erklären und eine evtl vorhandene Fehlermeldung zu posten.

    MfG,
    SilverHazard
     
    DaSHiFTeR gefällt das.
  5. source++

    source++ New Member

    Registriert seit:
    3. Juli 2017
    Beiträge:
    24
    Zustimmungen:
    22
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Teste es doch mal so:
    Code (C#):
       
    v = Convert.ToDouble(driver.FindElement(By.XPath("//*[@id='e_s_w']")).Text);
     
    oder so:
    Code (C#):
               
    v = Convert.ToDouble(driver.FindElement(By.Id("premium_exchange_stock_wood")).Text);
     
    Es gibt ja keine Value und selbst wenn, dann bekommst du einen String zurück, deshalb noch konvertieren wenn es ein Double sein soll ...
     
    krusty, DaSHiFTeR und SilverHazard gefällt das.
  6. DaSHiFTeR

    DaSHiFTeR Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    38
    Zustimmungen:
    5
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Beruf:
    Key-Account-Manager
    Ort:
    Köln
    Das war ein sehr guter Anreiz!
    Hat mir sehr weiter geholfen.
    Funktioniert nun alles 1A.
    Rechnung wie oben angegeben funktioniert ebenfalls :)

    Danke an die Mithelfenden.
     
    source++ gefällt das.
  7. DaSHiFTeR

    DaSHiFTeR Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    38
    Zustimmungen:
    5
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Beruf:
    Key-Account-Manager
    Ort:
    Köln
  8. source++

    source++ New Member

    Registriert seit:
    3. Juli 2017
    Beiträge:
    24
    Zustimmungen:
    22
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Der Klassen Name ist gegeben, damit solltest du wieder den Text bekommen.
     
    DaSHiFTeR gefällt das.
  9. DaSHiFTeR

    DaSHiFTeR Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    38
    Zustimmungen:
    5
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Beruf:
    Key-Account-Manager
    Ort:
    Köln
    Hey, danke für die Antwort.
    Hatte es mit der "class" und mit der "id" schon versucht aber funktioniert nicht, da mehrere Felder die Gleiche class haben.
    sonst hätte ich nicht nachgefragt :p

    Code (Text):
    <div class="premium-exchange-sep">
    <img src="https://dsde.innogamescdn.com/8.96/34030/graphic/resources/wood_18x16.png" alt=""/>
    2133
    </div>
    <div class="premium-exchange-sep">   ⇄ </div>
    <div class="premium-exchange-sep">
    <img class="" src="https://dsde.innogamescdn.com/8.96/34030/graphic/resources/premium.png" title="Premium-Punkte" alt=""/>
    1
    </div>
    </td>
    <td id="premium_exchange_rate_stone" class="center">
    <div class="premium-exchange-sep">
    <img src="https://dsde.innogamescdn.com/8.96/34030/graphic/resources/stone_18x16.png" alt=""/>
    2166
    </div>
    <div class="premium-exchange-sep">   ⇄ </div>
    <div class="premium-exchange-sep">
    <img class="" src="https://dsde.innogamescdn.com/8.96/34030/graphic/resources/premium.png" title="Premium-Punkte" alt=""/>
    1
    </div>
    </td>
    <td id="premium_exchange_rate_iron" class="center">
    <div class="premium-exchange-sep">
    <img src="https://dsde.innogamescdn.com/8.96/34030/graphic/resources/iron_18x16.png" alt=""/>
    2078
    </div>
    <div class="premium-exchange-sep">   ⇄ </div>
    <div class="premium-exchange-sep">
    <img class="" src="https://dsde.innogamescdn.com/8.96/34030/graphic/resources/premium.png" title="Premium-Punkte" alt=""/>
    1
    </div>
    [/SPOILER]
     
  10. source++

    source++ New Member

    Registriert seit:
    3. Juli 2017
    Beiträge:
    24
    Zustimmungen:
    22
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    So müsste es klappen:
    Code (C#):

    List<IWebElement> elements = driver.FindElements(By.ClassName("premium-exchange-sep")).ToList();
                double ergebniss = Convert.ToDouble(elements[2].Text);
     
    Musst du mal testen, hab bis jetzt nicht viel mit Selenium gemacht ...
     
    Zuletzt bearbeitet: 19. August 2017
  11. DaSHiFTeR

    DaSHiFTeR Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    38
    Zustimmungen:
    5
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Beruf:
    Key-Account-Manager
    Ort:
    Köln
    Danke mal wieder ich teste es später.
    Ich meinte natürlich nicht mit "id" sondern "XPath" ;)

    //edit: Klappt leider nicht.
    Er gibt 1 aus wie beim "XPath" davor auch.
     
    Zuletzt bearbeitet: 19. August 2017
  12. source++

    source++ New Member

    Registriert seit:
    3. Juli 2017
    Beiträge:
    24
    Zustimmungen:
    22
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Es gibt ja Elemente die 1 als Text haben. Du musst jetzt nur noch schauen welchen Index dein Element hat und bei elements[2] die Zahl dementsprechend ändern.
     
  13. DaSHiFTeR

    DaSHiFTeR Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    38
    Zustimmungen:
    5
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Beruf:
    Key-Account-Manager
    Ort:
    Köln
    Alles klar. Danke.
    Klar hätte ich auch selber drauf kommen können -.-
     

Diese Seite empfehlen

Die Seite wird geladen...