Automatisera webbläsarinteraktioner
Simulera användaråtgärder programmässigt, till exempel klick, rullning, formulärskick och väntan på att element ska läsas in.
Automatisera webbläsarinteraktioner är en gratis lektion i Webbskrapning och botutveckling på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Webbskrapning och botutveckling, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Webbskrapning och botutveckling innehåller totalt 4 lektioner.
Automatisera åtgärder i webbläsaren
I den föregående lektionen introducerade vi Selenium för att hantera dynamiskt webbinnehåll. Nu ska vi lära oss hur vi får våra botar att interagera med webbsidor!
Vi simulerar verkliga användaråtgärder som att klicka på knappar, skriva i formulär och rulla, vilket gör våra skrapverktyg mycket kraftfullare.
Hitta elementen först
Innan du kan interagera med ett element, till exempel en knapp eller ett textfält, måste du hitta det på sidan. Selenium erbjuder flera sätt att göra detta.
Du använder metoder som find_element(By.ID, "some_id") eller find_element(By.CLASS_NAME, "some_class") för att hitta det du söker.
By.ID: Unikt ID-attribut.By.NAME: Namnattribut.By.CLASS_NAME: CSS-klass.By.XPATH: Kraftfulla sökvägsuttryck.By.CSS_SELECTOR: CSS-selektorsyntax.
Klicka
Den vanligaste interaktionen är att klicka. Oavsett om det gäller en knapp, en länk eller en kryssruta utför metoden .click() uppgiften.
När du har hittat ett element anropar du bara .click() på det. Det simulerar ett musklick från användaren.
Prova att klicka på en påhittad 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()Skriva in text
För att fylla i formulär eller sökfält använder du metoden .send_keys(). Den simulerar att text skrivs in i ett inmatningsfält.
Du kan även skicka specialtangenter som Keys.ENTER, Keys.TAB och så vidare från selenium.webdriver.common.keys.
Nu skriver vi i ett sökfält:
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()Skicka formulärdata
När du har fyllt i ett formulär behöver du ofta skicka det. Det kan du göra på ett par olika sätt:
- Klicka på skicka-knappen:
submit_button.click() - Anropa
.submit()på valfritt inmatningselement i formuläret:input_field.submit()
Metoden .submit() är praktisk eftersom du inte behöver hitta den specifika skicka-knappen.
Exempel på hur du skickar ett formulär (efter att ha skrivit in text):
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()Varför vi behöver vänta
Webbsidor läser ofta in innehåll dynamiskt med JavaScript. Det innebär att element kanske inte är tillgängliga direkt när Selenium försöker hitta dem.
Om skriptet försöker interagera med ett element som ännu inte har lästs in uppstår ett fel. Det är här "väntan" kommer in!
Väntan instruerar Selenium att pausa körningen tills ett visst villkor är uppfyllt eller en tidsgräns nås.
Enkla implicita väntetider
En implicit väntetid instruerar WebDriver att söka efter element i DOM (Document Object Model) under en viss tid.
Om elementet inte är tillgängligt direkt väntar drivrutinen den angivna tiden innan den utlöser ett NoSuchElementException.
Detta är en global inställning för hela drivrutinssessionen:
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()Exakta explicita väntetider
Explicita väntetider är kraftfullare och mer flexibla. De låter dig ange ett specifikt villkor att vänta på i stället för en fast tid.
Du använder WebDriverWait tillsammans med expected_conditions (som ofta importeras som EC) för att ange vad du väntar på. Detta passar bäst för specifika element och dynamiskt innehåll.
Så här väntar du på att ett (påhittat) element med ID:t 'dynamicDiv' ska bli synligt:
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()Rulla för att läsa mer innehåll
Vissa webbplatser läser in innehåll medan du rullar nedåt (oändlig rullning). För att komma åt detta innehåll måste boten rulla på sidan.
Du kan använda JavaScript-körning för att rulla till en specifik position eller längst ned på sidan.
Så här rullar du längst ned:
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()Interagera med rullgardinsmenyer
HTML-element av typen <select> (rullgardinsmenyer) kräver ett särskilt tillvägagångssätt i Selenium med klassen Select.
Hitta först elementet <select>, skapa sedan ett Select-objekt och använd slutligen metoder som select_by_visible_text(), select_by_value() eller select_by_index().
Exempel:
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()Testa dina kunskaper
Du har lärt dig att automatisera olika interaktioner med webbläsaren och om väntetidernas viktiga roll.
Vilka av följande är giltiga sätt att interagera med webbelement med Selenium i Python?
Sammanfattning: Automatisera interaktioner
Bra jobbat! Nu vet du hur du får dina Selenium-botar att utföra vanliga användaråtgärder:
- Hitta element: Använd olika
By-strategier. - Interagera:
.click()för knappar och länkar,.send_keys()för textinmatning och.submit()för formulär. - Vänta: Viktigt för dynamiskt innehåll. Använd
implicitly_wait()eller den mer precisaWebDriverWaittillsammans medexpected_conditions. - Avancerat: Rulla med JavaScript och hantera rullgardinsmenyer med klassen
Select.
Dessa färdigheter är grundläggande när du bygger robusta skript för webbläsarautomatisering!
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Automatisera webbläsarinteraktioner” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Webbskrapning och botutveckling, inklusive ”Automatisera webbläsarinteraktioner”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Webbskrapning och botutveckling innehåller totalt 4 lektioner.
Vad lär jag mig i ”Automatisera webbläsarinteraktioner”?
Simulera användaråtgärder programmässigt, till exempel klick, rullning, formulärskick och väntan på att element ska läsas in. Ni övar på Webbskrapning och botutveckling med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Webbskrapning och botutveckling?
Du behöver inga förkunskaper. Utbildningen i Webbskrapning och botutveckling på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Automatisera webbläsarinteraktioner”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Webbskrapning och botutveckling-lektionen?
Ja. Varje Webbskrapning och botutveckling-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Introduktion till Selenium
- Automatisera webbläsarinteraktioner
- Extrahera data från JavaScript
- Väntstrategier för dynamiska sidor