完成selenium的鍵盤事件和鼠標事件,接下來當然是要完成更多了。
通常情況下,在網頁中會有一些下拉框進行選擇或者給你一個彈框告訴你需要進行確認,遇到這樣的情況如何解決呢,這里就來說一說……
# coding=utf-8 import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.select import Select driver = webdriver.Chrome() driver.get("https://www.baidu.com") time.sleep(5) # driver.find_element(By.ID, "kw").send_keys("selenium&python") # driver.find_element(By.ID, "su").click() # driver.find_element(By.XPATH, '/html/body/div[1]/div[5]/div[1]/div[2]/div[1]/div[2]/div[1]').click() # driver.find_element(By.XPATH, '/html/body/div[1]/div[5]/div[1]/div[2]/div[1]/div[1]/span[2]').click() # 折騰半天才發現定位出來的不是下拉框…… driver.find_element(By.LINK_TEXT, '設置').click() driver.find_element(By.LINK_TEXT, '搜索設置').click() time.sleep(2) sel = driver.find_element(By.XPATH, '//*[@id="nr"]') # 定位下拉框 Select(sel).select_by_value('50') # 通過value的值進行選定條目 driver.find_element(By.CLASS_NAME, 'prefpanelgo').click() time.sleep(2) driver.switch_to.alert.accept() # 此處同意警告框提示內容 time.sleep(2) driver.quit()
在百度首頁想要進行設置每次搜索頁面顯示的數目,就會有一個下拉框進行選擇,這里可以導入Select這個模塊進行對下拉框進行選擇,通常下拉框的列表是包含一個值的,這樣就可以通過value來選定,完成設置之后,當然是要保存設置啦,點擊保存發現,居然有一個彈框,這可如何是好,切換至alert之后接受吧……
通過在編輯器中的提示,我們同樣可以給彈框發送一個值,當然這里設置中並沒有出現這類情況。
這次對下拉框和彈框的處理過程中,折騰了不短時間,原因就是元素等待的問題,下回要仔細研究下元素等待的問題了。