Avatar billede dane022 Seniormester
02. april 2023 - 21:56 Der er 6 kommentarer og
1 løsning

Input via Selenium/Chrome virker ikke

Hej

Jeg prøver at indsætte produktionsenhedsnummer på Virk.dk. Det er en side der kræver rettigheder, så jeg får ikke noget ud af at linke til den her.

Et af felterne driller og jeg synes jeg har prøvet alt.
(Del af) kode i Excel:
.FindElementById("ContentPage_PNummer_flexselect").SendKeys "1003259212"

Elementet består af 2 dele: 1) option med en masse værdier (herunder kun gengivet 3 værdier) og 2) selve feltet
1) <select name="ctl00$ContentPage$PNummer" id="ContentPage_PNummer" class="max flexselect" aria-required="true" style="display: none;">
<option selected="selected" value=""></option> <option value="1003191078">1003191078 - BREDALSPARKENS FRITIDSCENTER - Sognegårds Alle 70, Hvidovre</option> <option value="1003259212">1003259212 - Ungecenter Porten - Bødkerporten 3, Hvidovre</option>     <option value="1003267238">1003267238 - Hjemmeplejedistrikt VEST - Bødkerporten 1, Hvidovre</option>

<input type="text" autocomplete="off" id="ContentPage_PNummer_flexselect" placeholder="Søg på fx. P-nr., virksomhedsnavn eller adresse" class="max flexselect" style="visibility: visible;">

Som jeg ser det, er det et dropdown felt, men som godt kan udfyldes med tekstværdi. Når jeg prøver at få p-nummeret sendt fra Excel, udfylder teksten sig bagerst i feltet fordi feltet begynder at forudfylde sig selv under indtastning. Hvis jeg ville udfylde feltet manuelt, kan det ikke udfyldes ved at skrive i det da samme problem opstår, men feltet kan godt udfyldes hvis man f.eks. copy + paster hele teksten på én gang mens man står i feltet. Det synes jeg ikke jeg kan gengive med automatiseringen.

Feltet virker noget dårligt lavet efter min mening, da jeg ellers ikke har haft lignende problemer andre steder.

På forhånd tak for hjælp
Avatar billede Tom K. Forsker
02. april 2023 - 22:35 #1
Et muligt løsningsforslag er at bruge "Select" i stedet for "SendKeys". Med "Select" kan du vælge en af de tilgængelige muligheder i dropdown-feltet ved at bruge værdien af "option" elementet.

Dim selectElem As Object
Set selectElem = ie.document.getElementById("ContentPage_PNummer")

Dim optionElem As Object
For Each optionElem In selectElem.getElementsByTagName("option")
    If optionElem.Value = "1003259212" Then
        optionElem.Selected = True
        Exit For
    End If
Next optionElem
Avatar billede dane022 Seniormester
03. april 2023 - 09:00 #2
Denne linje fejler:
For Each optionElem In selectElem.getElementsByTagName("option")
Med teksten "Object required"
Avatar billede Tom K. Forsker
03. april 2023 - 11:54 #3
// Få fat i select-elementet
var selectElem = document.getElementById("mySelect");

// Tjek om selectElem er defineret og ikke er null eller undefined
if (selectElem && selectElem.getElementsByTagName) {

  // Loop igennem alle option-elementerne
  var optionElems = selectElem.getElementsByTagName("option");
  for (var i = 0; i < optionElems.length; i++) {
    var optionElem = optionElems[i];

    // Gør noget med hvert option-element
    // ...
  }
}
Avatar billede Tom K. Forsker
03. april 2023 - 11:57 #4
skal du sørge for, at selectElem-objektet er korrekt defineret og initialiseret før du bruger det i koden.
Avatar billede dane022 Seniormester
04. april 2023 - 07:19 #5
Er der skiftet programmeringssprog?
Jeg får fejl på ordet "Var" i "var selectElem = document.getElementById("mySelect")": "Sub or funcion not defined"
Avatar billede dane022 Seniormester
07. april 2023 - 17:51 #6
Har fået chtgpt til at hjælpe mig og denne kode indsætter nu værdien i feltet. Men lige så snart siden opdaterer sig selv, forsvinder indtastningen. Dette uanset hvilken af de 2 muligheder jeg benytter.

Koden:
Dim dropdown As WebElement
Set dropdown = obj.FindElementById("ContentPage_PNummer_flexselect")
'obj.ExecuteScript "arguments[0].value = '1003267238';", dropdown
obj.ExecuteScript "arguments[0].value = '1003267238 - Hjemmeplejedistrikt VEST - Bødkerporten 1, Hvidovre';", dropdown

Elementet:
<option value="1003267238">1003267238 - Hjemmeplejedistrikt VEST - Bødkerporten 1, Hvidovre</option>

Jeg kan se at værdien jo er der, så hvorfor, den ikke vil kendes ved det er jeg helt blank overfor.

Lige for god ordens skyld, så består dropdown listen af disse 2 elementer:

<select name="ctl00$ContentPage$PNummer" id="ContentPage_PNummer" class="max flexselect" aria-required="true" style="display: none;">
<option selected="selected" value=""></option>... og en hel masse options nedenunder

<input type="text" autocomplete="off" id="ContentPage_PNummer_flexselect" placeholder="Søg på fx. P-nr., virksomhedsnavn eller adresse" class="max flexselect" style="visibility: visible;">
Avatar billede dane022 Seniormester
13. april 2023 - 21:45 #7
Løsningen blev javascript

Set Dropdown = obj.FindElementByXPath("//*[@id='ContentPage_PNummer']")
p_nummer = wb1.Worksheets("Indtastning").Cells(Række, "K").value
obj.ExecuteScript "arguments[0].value = '" & p_nummer & "';", Dropdown
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester