Automatisering av nettleserinteraksjoner
Simuler brukerhandlinger programmatisk, som klikk, rulling, innsending av skjemaer og venting på at elementer skal lastes inn.
Automatisering av nettleserinteraksjoner er en gratis leksjon i Nettskraping og boter på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Nettskraping og boter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Nettskraping og boter inneholder totalt 4 leksjoner.
Automatiser nettleserhandlinger
I forrige leksjon introduserte vi Selenium for å håndtere dynamisk nettinnhold. Nå skal vi lære hvordan vi får robotene våre til å samhandle med nettsider!
Vi skal simulere handlinger en ekte bruker utfører, som å klikke på knapper, skrive i skjemaer og rulle, slik at skraperne våre blir mye kraftigere.
Finn elementene først
Før du kan samhandle med et element, for eksempel en knapp eller et tekstfelt, må du finne det på siden. Selenium tilbyr flere måter å gjøre dette på.
Du bruker metoder som find_element(By.ID, "some_id") eller find_element(By.CLASS_NAME, "some_class") for å finne det ønskede elementet.
By.ID: Unik ID-attributt.By.NAME: Name-attributt.By.CLASS_NAME: CSS-klasse.By.XPATH: Kraftige baneuttrykk.By.CSS_SELECTOR: Syntaks for CSS-selektorer.
Klikk på et element
Den vanligste interaksjonen er å klikke. Enten det er en knapp, en lenke eller en avkrysningsboks, gjør metoden .click() jobben.
Når du har funnet et element, kaller du ganske enkelt .click() på det. Dette simulerer et museklikk fra en bruker.
Prøv å klikke på en tenkt knapp:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
def main():
driver = webdriver.Chrome() # Or Firefox, Edge, etc.
driver.get("https://www.example.com")
try:
# Imagine a button with ID 'myButton'.
# On example.com, we can click the 'More information...' link.
more_info_link = driver.find_element(By.LINK_TEXT, "More information...")
more_info_link.click()
print("Clicked 'More information...' link.")
time.sleep(2) # To see the new page
finally:
driver.quit()
if __name__ == "__main__":
main()Skriv inn tekst
For å fylle ut skjemaer eller søkefelt bruker du metoden .send_keys(). Den simulerer at du skriver tekst i et inndatafelt.
Du kan også sende spesialtaster som Keys.ENTER, Keys.TAB og så videre fra selenium.webdriver.common.keys.
La oss skrive i et søkefelt:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
def main():
driver = webdriver.Chrome()
driver.get("https://www.google.com") # Using google for a search box
try:
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("CoddyKit Selenium")
time.sleep(2) # See the typed text
finally:
driver.quit()
if __name__ == "__main__":
main()Send inn skjemadata
Når du har fylt ut et skjema, må du ofte sende det inn. Dette kan du gjøre på et par måter:
- Klikk på send-knappen:
submit_button.click() - Kall
.submit()på et hvilket som helst inndataelement i skjemaet:input_field.submit()
Metoden .submit() er praktisk fordi du ikke trenger å finne den bestemte send-knappen.
Eksempel på innsending av et skjema etter at du har skrevet inn tekst:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
def main():
driver = webdriver.Chrome()
driver.get("https://www.google.com")
try:
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Selenium forms")
search_box.submit() # Submits the form containing this element
time.sleep(3) # Observe search results
finally:
driver.quit()
if __name__ == "__main__":
main()Hvorfor vi må vente
Nettsider laster ofte innhold dynamisk ved hjelp av JavaScript. Det betyr at elementer kanskje ikke er tilgjengelige med én gang Selenium prøver å finne dem.
Hvis skriptet prøver å samhandle med et element som ikke er lastet inn ennå, oppstår det en feil. Det er her «waits» kommer inn!
«Waits» ber Selenium sette kjøringen på pause til en bestemt betingelse er oppfylt eller en tidsavbrudd oppstår.
Enkle implisitte ventinger
En implisitt venting ber WebDriver undersøke DOM-en (Document Object Model) i et bestemt tidsrom når den prøver å finne et element.
Hvis elementet ikke er tilgjengelig med én gang, venter driveren i det angitte tidsrommet før den utløser en NoSuchElementException.
Dette er en global innstilling for hele driverøkten:
from selenium import webdriver
import time
def main():
driver = webdriver.Chrome()
# Set implicit wait for 10 seconds
driver.implicitly_wait(10)
try:
driver.get("https://www.example.com")
print("Implicit wait set for 10 seconds.")
# Any subsequent find_element calls will wait up to 10s
# if the element isn't immediately found.
time.sleep(2) # Just to show the wait is active
finally:
driver.quit()
if __name__ == "__main__":
main()Presise eksplisitte ventinger
Eksplisitte ventinger er kraftigere og mer fleksible. De lar deg definere en bestemt betingelse du skal vente på, i stedet for et fast tidsrom.
Du bruker WebDriverWait sammen med expected_conditions (ofte importert som EC) for å angi hva du venter på. Dette passer best for bestemte elementer og dynamisk innhold.
Slik venter du på at et (fiktivt) element med ID-en 'dynamicDiv' skal bli synlig:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
def main():
driver = webdriver.Chrome()
driver.get("https://www.example.com")
try:
print("Waiting for an element to be visible...")
# WebDriverWait waits up to 10 seconds
# for an element with ID 'dynamicDiv' to become visible.
# This element does not exist on example.com, so it will timeout.
# In a real app, replace with a real ID.
element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, "dynamicDiv"))
)
print(f"Element found: {element.text}")
except Exception as e:
print(f"Element not found or timed out: {e}")
finally:
driver.quit()
if __name__ == "__main__":
main()Rull for å se mer innhold
Noen nettsteder laster innhold etter hvert som du ruller nedover (uendelig rulling). For å få tilgang til dette innholdet må roboten din rulle på siden.
Du kan bruke JavaScript-kjøring til å rulle til en bestemt posisjon eller til bunnen av siden.
Slik ruller du helt til bunnen:
from selenium import webdriver
import time
def main():
driver = webdriver.Chrome()
driver.get("https://www.wikipedia.org") # A page that can be scrolled
try:
# Scroll down to the bottom of the page
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
print("Scrolled to the bottom of the page.")
time.sleep(2) # Observe the scroll
# You can also scroll incrementally:
# driver.execute_script("window.scrollBy(0, 500);")
finally:
driver.quit()
if __name__ == "__main__":
main()Samhandle med nedtrekksmenyer
HTML-elementer av typen <select> (nedtrekksmenyer) krever en egen fremgangsmåte i Selenium, der du bruker klassen Select.
Finn først <select>-elementet, opprett deretter et Select-objekt, og bruk til slutt metoder som select_by_visible_text(), select_by_value() eller select_by_index().
Eksempel:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import time
def main():
driver = webdriver.Chrome()
# For this example, we'll use a test page with a dropdown.
# In a real scenario, you'd navigate to a specific URL.
driver.get("https://www.selenium.dev/selenium/web/formPage.html")
try:
# Find the select element by its ID
select_element = driver.find_element(By.ID, "selectMenu")
select = Select(select_element)
# Select an option by its visible text
select.select_by_visible_text("Example select text")
print("Selected 'Example select text' by visible text.")
time.sleep(2)
# Select an option by its value attribute
select.select_by_value("2")
print("Selected option with value '2'.")
time.sleep(2)
finally:
driver.quit()
if __name__ == "__main__":
main()Test kunnskapene dine
Du har lært om automatisering av ulike nettleserinteraksjoner og den viktige rollen ventinger spiller.
Hvilke av følgende er gyldige måter å samhandle med nettelementer på ved hjelp av Selenium i Python?
Oppsummering: Automatisering av interaksjoner
Godt jobbet! Nå vet du hvordan du får Selenium-robotene dine til å utføre vanlige brukerhandlinger:
- Finne elementer: Ved hjelp av ulike
By-strategier. - Samhandle:
.click()for knapper og lenker,.send_keys()for tekstinntasting og.submit()for skjemaer. - Vente: Avgjørende for dynamisk innhold, ved hjelp av
implicitly_wait()eller den mer presiseWebDriverWaitsammen medexpected_conditions. - Avansert: Rulle med JavaScript og håndtere nedtrekksmenyer med klassen
Select.
Disse ferdighetene er grunnleggende for å lage robuste skript for nettleserautomatisering!
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Automatisering av nettleserinteraksjoner» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Nettskraping og boter, inkludert «Automatisering av nettleserinteraksjoner», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Nettskraping og boter inneholder totalt 4 leksjoner.
Hva lærer jeg i «Automatisering av nettleserinteraksjoner»?
Simuler brukerhandlinger programmatisk, som klikk, rulling, innsending av skjemaer og venting på at elementer skal lastes inn. Du øver på Nettskraping og boter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Nettskraping og boter?
Ingen tidligere erfaring er nødvendig. Nettskraping og boter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Automatisering av nettleserinteraksjoner»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Nettskraping og boter-leksjonen?
Ja. Alle Nettskraping og boter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Introduksjon til Selenium
- Automatisering av nettleserinteraksjoner
- Datauthenting fra JavaScript
- Ventestrategier for dynamiske sider