Selenium FindElement By Xpath und .Replace

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Selenium FindElement By Xpath und .Replace

    Also mein Problem besteht aus Folgendem

    Erstmal mein Code

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim Tag As String = TextBox5.Text
    2. Tag.Replace("01", "1").Replace("02", "2").Replace("03", "3").Replace("04", "4").Replace("05", "5").Replace("06", "6").Replace("07", "7").Replace("08", "8").Replace("09", "9")
    3. Dim Monat As String = TextBox6.Text
    4. Monat.Replace("01", "1").Replace("02", "2").Replace("03", "3").Replace("04", "4").Replace("05", "5").Replace("06", "6").Replace("07", "7").Replace("08", "8").Replace("09", "9")
    5. Dim Jahrx As String = TextBox7.Text
    6. Jahrx.Replace("2017", "2").Replace("2016", "3").Replace("2015", "4").Replace("2014", "5").Replace("2013", "6").Replace("2012", "7").Replace("2011", "8").Replace("2010", "9").Replace("2009", "10").Replace("2008", "11").Replace("2007", "12").Replace("2006", "13").Replace("2005", "14").Replace("2004", "15").Replace("2003", "16").Replace("2002", "17").Replace("2001", "18").Replace("2000", "19").Replace("1999", "20").Replace("1998", "21").Replace("1997", "22").Replace("1996", "23").Replace("1995", "24").Replace("1994", "25").Replace("1993", "26").Replace("1992", "27").Replace("1991", "28").Replace("1990", "29").Replace("1989", "30").Replace("1988", "31").Replace("1987", "32").Replace("1986", "33").Replace("1985", "34").Replace("1984", "35").Replace("1983", "36").Replace("1982", "37").Replace("1981", "38").Replace("1980", "39").Replace("1979", "40").Replace("1978", "41").Replace("1977", "42").Replace("1976", "43").Replace("1975", "44").Replace("1974", "45").Replace("1973", "46").Replace("1972", "47").Replace("1971", "48").Replace("1970", "49").Replace("1969", "50").Replace("1968", "51").Replace("1967", "52").Replace("1966", "53").Replace("1965", "54").Replace("1964", "55").Replace("1963", "56").Replace("1962", "57").Replace("1961", "58").Replace("1960", "59").Replace("1959", "60").Replace("1958", "61").Replace("1957", "62").Replace("1956", "63").Replace("1955", "64").Replace("1954", "65").Replace("1953", "66").Replace("1952", "67").Replace("1951", "68").Replace("1950", "69")
    7. System.Threading.Thread.Sleep(2000)
    8. Dim GebTag As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:day_label']"))
    9. GebTag.Click()
    10. Dim GebTagAuswahl As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:day_panel']/div/ul/li[" & Tag & "]"))
    11. GebTagAuswahl.Click()
    12. Dim GebMonat As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:month_label']"))
    13. GebMonat.Click()
    14. Dim GebMonatAuswahl As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:month_panel']/div/ul/li[" & Monat & "]"))
    15. GebMonatAuswahl.Click()
    16. Dim GebJahr As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:year_label']"))
    17. GebJahr.Click()
    18. Dim GebJahrAuswahl As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:year_panel']/div/ul/li[" & Jahrx & "]"))
    19. GebJahrAuswahl.Click()



    Dieser Code Wählt mit dem Selenium Addon 3 Dropdown Boxen Einer Website aus

    Bei Tag hier Tag As String
    Und Monat hier Monat As String funktioniert das wunderbar

    Aber bei jahr wurde es etwas Problematisch

    Denn nicht nur das Die id im Xpath für Zum Beispiel das Jahr 2017 = 2 ist

    Sondern auch troz der Replace Funktion 2017 = 2 der Pfad sollte dan so ausehen

    VB.NET-Quellcode

    1. (By.XPath("//*[@id='form:birthday:year_panel']/div/ul/li[2]"))


    Wird er so generiert

    VB.NET-Quellcode

    1. (By.XPath("//*[@id='form:birthday:year_panel']/div/ul/li[2017]"))


    Und ich mittlerweile am verzweifeln da es bei den anderen ja auch funktioniert

    Kann mir irgendwer helfen?

    Und PS ich weis das das mit dem Jahr generieren unschön aussieht und viel Code Generiert Leider weis ich mir als anfänger nicht besser zu helfen
    Alein das ich schon so weit gekommen bin ist echt ein wunder da das eigentlich Hoch fortgeschrittenen materie ist

    Edir Ich versuche alles aber die Replace funktion ist auch in gekürzter vorm nciht anwendbar und ich habe echt keine ahnung wieso

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „bigbase“ ()

    @bigbase Ich würde mir aus den Datum-Fragmenten ein DateTime-Objekt generieren.
    Dort kannst Du dann mit arithmetischen Operationen Deine Korrekturen vornehmen und das Objekt formatieren, wie immer Du willst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    @bigbase Ich würde mir aus den Datum-Fragmenten ein DateTime-Objekt generieren.
    Dort kannst Du dann mit arithmetischen Operationen Deine Korrekturen vornehmen und das Objekt formatieren, wie immer Du willst.


    Kannst du das eventuell Genauer erklären ?
    Ich habe jetzt eine funktionierende lösung gefunden aber frölich bin ich damit nicht

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim Tag As String = TextBox5.Text
    2. Tag.Replace("01", "1").Replace("02", "2").Replace("03", "3").Replace("04", "4").Replace("05", "5").Replace("06", "6").Replace("07", "7").Replace("08", "8").Replace("09", "9")
    3. Dim Monat As String = TextBox6.Text
    4. Monat.Replace("01", "1").Replace("02", "2").Replace("03", "3").Replace("04", "4").Replace("05", "5").Replace("06", "6").Replace("07", "7").Replace("08", "8").Replace("09", "9")
    5. Dim Jahrx As String = TextBox7.Text
    6. Jahrx = Replace(Jahrx, "2017", "2")
    7. Jahrx = Replace(Jahrx, "1999", "20")
    8. Jahrx = Replace(Jahrx, "1998", "21")
    9. Jahrx = Replace(Jahrx, "1997", "22")
    10. Jahrx = Replace(Jahrx, "1996", "23")
    11. Jahrx = Replace(Jahrx, "1995", "24")
    12. Jahrx = Replace(Jahrx, "1994", "25")
    13. Jahrx = Replace(Jahrx, "1993", "26")
    14. Jahrx = Replace(Jahrx, "1992", "27")
    15. Jahrx = Replace(Jahrx, "1991", "28")
    16. Jahrx = Replace(Jahrx, "1990", "29")
    17. Jahrx = Replace(Jahrx, "1989", "30")
    18. Jahrx = Replace(Jahrx, "1988", "31")
    19. Jahrx = Replace(Jahrx, "1987", "32")
    20. Jahrx = Replace(Jahrx, "1986", "33")
    21. Jahrx = Replace(Jahrx, "1985", "34")
    22. Jahrx = Replace(Jahrx, "1984", "35")
    23. Jahrx = Replace(Jahrx, "1983", "36")
    24. Jahrx = Replace(Jahrx, "1982", "37")
    25. Jahrx = Replace(Jahrx, "1981", "38")
    26. Jahrx = Replace(Jahrx, "1980", "39")
    27. Jahrx = Replace(Jahrx, "1979", "40")
    28. Jahrx = Replace(Jahrx, "1978", "41")
    29. Jahrx = Replace(Jahrx, "1977", "42")
    30. Jahrx = Replace(Jahrx, "1976", "43")
    31. Jahrx = Replace(Jahrx, "1975", "44")
    32. Jahrx = Replace(Jahrx, "1974", "45")
    33. Jahrx = Replace(Jahrx, "1973", "46")
    34. Jahrx = Replace(Jahrx, "1972", "47")
    35. Jahrx = Replace(Jahrx, "1971", "48")
    36. Jahrx = Replace(Jahrx, "1970", "49")
    37. Jahrx = Replace(Jahrx, "1969", "50")
    38. Jahrx = Replace(Jahrx, "1968", "51")
    39. Jahrx = Replace(Jahrx, "1967", "52")
    40. Jahrx = Replace(Jahrx, "1966", "53")
    41. Jahrx = Replace(Jahrx, "1965", "54")
    42. Jahrx = Replace(Jahrx, "1964", "55")
    43. Jahrx = Replace(Jahrx, "1963", "56")
    44. Jahrx = Replace(Jahrx, "1962", "57")
    45. Jahrx = Replace(Jahrx, "1961", "58")
    46. Jahrx = Replace(Jahrx, "1960", "59")
    47. Jahrx = Replace(Jahrx, "1959", "60")
    48. Jahrx = Replace(Jahrx, "1958", "61")
    49. Jahrx = Replace(Jahrx, "1957", "62")
    50. Jahrx = Replace(Jahrx, "1956", "63")
    51. Jahrx = Replace(Jahrx, "1955", "64")
    52. Jahrx = Replace(Jahrx, "1954", "65")
    53. Jahrx = Replace(Jahrx, "1953", "66")
    54. Jahrx = Replace(Jahrx, "1952", "67")
    55. Jahrx = Replace(Jahrx, "1951", "68")
    56. Jahrx = Replace(Jahrx, "1950", "69")
    57. System.Threading.Thread.Sleep(20)
    58. Dim GebTag As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:day_label']"))
    59. GebTag.Click()
    60. Dim GebTagAuswahl As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:day_panel']/div/ul/li[" & Tag & "]"))
    61. GebTagAuswahl.Click()
    62. Dim GebMonat As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:month_label']"))
    63. GebMonat.Click()
    64. Dim GebMonatAuswahl As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:month_panel']/div/ul/li[" & Monat & "]"))
    65. GebMonatAuswahl.Click()
    66. Dim GebJahr As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:year_label']"))
    67. GebJahr.Click()
    68. Dim GebJahrAuswahl As IWebElement = onlinedriver.FindElement(By.XPath("//*[@id='form:birthday:year_panel']/div/ul/li[" & Jahrx & "]"))
    69. GebJahrAuswahl.Click()
    @bigbase So etwa, die genaue Formatierung musst Du nachschlagen:

    VB.NET-Quellcode

    1. Dim Jahr = CInt(TextBox7.Text)
    2. Dim Monat = CInt(TextBox6.Text)
    3. Dim Tag = CInt(TextBox5.Text)
    4. Dim dt = New DateTime(Jahr, Monat, Tag)
    5. dt = dt.AddYears(19)
    6. MessageBox.Show(dt.ToString("yy.M.d"))
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!