Toon posts:

[Python] Element by id / name ???

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik probeer met Python in te loggen op ons order portaal om daarna het inleggen van orders te kunnen automatiseren. Dit is de website:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<html>
<head runat="server">
    <title>Aanmelden bij GEHEIM</title>
    <link href="../../Content/EHeroes/Site.css" rel="stylesheet" type="text/css" />
</head>
<body class="LogonHome">
    <div id="LogonContainer">
        <h2>
            Aanmelden
        </h2>
<form action="/Account/Login?ReturnUrl=%2FCRM%2Fenduser%2FSearch" autocomplete="off" id="form0" method="post"><div class="validation-summary-errors" id="validationSummary"><span>Aanmelding mislukt. Herstel eventuele fouten en probeer opnieuw.</span>
<ul><li style="display:none"></li>
</ul></div><div class="validation-summary-errors" id="validationSummary"><span>Let op: Na 3 mislukte pogingen wordt uw gebruikersnaam gedurende 1 uur geblokkeerd.</span>
<ul><li style="display:none"></li>
</ul></div>            <div>
                <fieldset>
                    <legend>Gegevens</legend>
                    <div class="editor-label">
                        Gebruikersnaam
                    </div>
                    <div class="editor-field">
                        <input name="username" type="text" autocomplete="off" autofocus />
                    </div>
                    <div class="editor-label">
                        Wachtwoord
                    </div>
                    <div class="editor-field">
                        <input name="password" type="password" autocomplete="off" />
                    </div>
                    
                    <div class="editor-field" style="width:300px;text-align:left;">
                        <br />
                        <button type="submit" ><span class="gradient">Aanmelden</span></button> <a href="/Account/RequestPasswordReset">Wachtwoord vergeten?</a>
                    </div>
                </fieldset>
                
            </div>
</form><script type="text/javascript">
//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; }
window.mvcClientValidationMetadata.push({"Fields":[],"FormId":"form0","ReplaceValidationSummary":false,"ValidationSummaryId":"validationSummary"});
//]]>
</script>    </div>
</body>
</html>


Dit is mijn huidige Python code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#Imports
import http.client
import urllib
import time
import datetime
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from bs4 import BeautifulSoup
import urllib.request
import os
import sys


#Code

os.system('cls')
print ("----------------------")
print ("----------------------")

GEHEIM_klant_id = input("Wat is het GEHEIM klant ID nummer ")


browser = webdriver.Firefox()
browser.get("https://GEHEIM.GEHEIM.nl/CRM/enduser/Search")
print ("Wachten op GEHEIM")
time.sleep ( 1 )
browser.set_window_position(800, 50)

klantid = browser.find_element_by_name("username")
klantid.send_keys("USERNAAM")

klantid = browser.find_element_by_name("password")
klantid.send_keys("WACHTWOORD")

browser.find_element_by_link_text('Aanmelden')
browser.click()


Ik krijg het niet voor elkaar om op de knop AANMELDEN te klikken omdat er geen ID is of element by name om ernaar te verwijzen.

Uiteraard Google al geraadpleegd en Stackoverflow maar ik kom niet echt verder. Kunnen jullie helpen?

Beste antwoord (via Verwijderd op 24-05-2017 09:59)


  • Merethil
  • Registratie: December 2008
  • Laatst online: 05-10 15:27
Verwijderd schreef op woensdag 24 mei 2017 @ 09:49:
[...]


Dan krijgt ik een error:

code:
1
2
3
4
5
6
Traceback (most recent call last):
  File "C:/Users/Ricardo/PycharmProjects/IRMA_orderinvoer/GEHEIM_auto_invoer.py", line 39, in <module>
    element.submit()
NameError: name 'element' is not defined

Process finished with exit code 1


Zowel met:
...
klantid = browser.find_element_by_name("password")
klantid.send_keys("XXXXX")

element.submit()
...

als met:

...
klantid = browser.find_element_by_name("password")
klantid.send_keys("XXXXX")

browser.element.submit()
...
Dat komt omdat "element" de naam is van je variabele. Probeer eens
code:
1
klantid.submit()
bijvoorbeeld.

Reden dat je dit zou moeten doen is omdat je dan op een element in de form een submit aanroept, waarbij hij kan opzoeken welke form bij dit element hoort.

[ Voor 9% gewijzigd door Merethil op 24-05-2017 09:55 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 05-10 15:27
Ik heb even gegoogled en dan vind je deze pagina:

http://selenium-python.readthedocs.io/navigating.html

Daar staat het volgende:
Alternatively, WebDriver has the convenience method “submit” on every element. If you call this on an element within a form, WebDriver will walk up the DOM until it finds the enclosing form and then calls submit on that. If the element isn’t in a form, then the NoSuchElementException will be raised:

Python:
1
element.submit()
Misschien dat eens proberen? Je wil namelijk gewoon de form submitten, want dat is wat die specifieke button ook doet.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Merethil schreef op dinsdag 23 mei 2017 @ 21:59:
Ik heb even gegoogled en dan vind je deze pagina:

http://selenium-python.readthedocs.io/navigating.html

Daar staat het volgende:

[...]


Misschien dat eens proberen? Je wil namelijk gewoon de form submitten, want dat is wat die specifieke button ook doet.
Dan krijgt ik een error:

code:
1
2
3
4
5
6
Traceback (most recent call last):
  File "C:/Users/Ricardo/PycharmProjects/IRMA_orderinvoer/GEHEIM_auto_invoer.py", line 39, in <module>
    element.submit()
NameError: name 'element' is not defined

Process finished with exit code 1


Zowel met:
...
klantid = browser.find_element_by_name("password")
klantid.send_keys("XXXXX")

element.submit()
...

als met:

...
klantid = browser.find_element_by_name("password")
klantid.send_keys("XXXXX")

browser.element.submit()
...

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 05-10 15:27
Verwijderd schreef op woensdag 24 mei 2017 @ 09:49:
[...]


Dan krijgt ik een error:

code:
1
2
3
4
5
6
Traceback (most recent call last):
  File "C:/Users/Ricardo/PycharmProjects/IRMA_orderinvoer/GEHEIM_auto_invoer.py", line 39, in <module>
    element.submit()
NameError: name 'element' is not defined

Process finished with exit code 1


Zowel met:
...
klantid = browser.find_element_by_name("password")
klantid.send_keys("XXXXX")

element.submit()
...

als met:

...
klantid = browser.find_element_by_name("password")
klantid.send_keys("XXXXX")

browser.element.submit()
...
Dat komt omdat "element" de naam is van je variabele. Probeer eens
code:
1
klantid.submit()
bijvoorbeeld.

Reden dat je dit zou moeten doen is omdat je dan op een element in de form een submit aanroept, waarbij hij kan opzoeken welke form bij dit element hoort.

[ Voor 9% gewijzigd door Merethil op 24-05-2017 09:55 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Merethil schreef op woensdag 24 mei 2017 @ 09:54:
[...]


Dat komt omdat "element" de naam is van je variabele. Probeer eens
code:
1
klantid.submit()
bijvoorbeeld.

Reden dat je dit zou moeten doen is omdat je dan op een element in de form een submit aanroept, waarbij hij kan opzoeken welke form bij dit element hoort.
Thanks! Werkt perfect, goed om te weten voor in toekomst.

Als ik nog meer vragen heb die ik niet gevonden krijg, is het dan wijs om een separate vraag te openen of hieronder verder te gaan?

Acties:
  • +1 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 05-10 15:27
Verwijderd schreef op woensdag 24 mei 2017 @ 10:00:
[...]


Thanks! Werkt perfect, goed om te weten voor in toekomst.

Als ik nog meer vragen heb die ik niet gevonden krijg, is het dan wijs om een separate vraag te openen of hieronder verder te gaan?
Ik zou zelf een aparte vraag aanmaken tenzij het specifiek te maken heeft met elementen oppikken via Selenium. Echter, veel van de dingen waar je tegenaan zal lopen met Selenium staan goed uitgelegd op de site die ik doorgaf, en er zijn een hele hoop StackOverflow-pagina's over, dus ik zou zeker eerst goed googlen voor je verder vraagt ;)

Succes!
Pagina: 1