Python中的selenium的簡單用法

回憶不說話發表於2018-07-31

1 按鍵操作

from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')

# 找到輸入框,並且輸入指定內容
driver.find_element_by_id('kw').send_keys('selenium')
time.sleep(1)
# 全選輸入框內的全部內容
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a')

 

# 找到輸入框,並且輸入指定內容/中文格式
driver.find_element_by_id('kw').send_keys(u'爬蟲技巧')
time.sleep(1)
# 點選百度,進行搜尋
driver.find_element_by_id('su').click()
time.sleep(1)
# 退出瀏覽器
driver.quit()

2  設定等待時間

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
# WebDriverWait網頁等待
# 值1:等待的物件
# 值2:等待的時間
# WebDriverWait經常和until或者until not一起使用
is_visible = WebDriverWait(driver,10).until(lambda a:button.is_displayed())
print(is_visible)
WebDriverWait() 和 time.sleep()異同點:
1.都是讓程式等待執行的時間
2.time的時間是固定的,時間長短不會隨著標籤的載入速度而改變
  WenDriverWait時間是不固定的,等待多少時間要看標籤的載入時間和指定的固定的時間
3.如果在指定的時間內,標籤仍然沒有載入出來,那麼time和WebDriverWait都會爆出異常

3 點選click()的簡單應用

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
# 找到logo的標籤
driver.find_element_by_class_name('index-logo-src')
logo = driver.find_element_by_xpath('//div[@id="lg"]/img')
# 等待直到目標標籤出現
WebDriverWait(logo,10).until(lambda driver:logo.is_displayed())
# 雙擊
ActionChains(driver).double_click(logo).perform()
# 滑鼠移動,將滑鼠移動到指定位置
time.sleep(1)
more = driver.find_element_by_class_name('bri')
WebDriverWait(driver,10).until(lambda driver : more.is_displayed())
ActionChains(driver).move_to_element(more).perform()

4 標籤選擇

# 通過標籤名字來找到指定的標籤
btns = driver.find_elements_by_tag_name('button')
print(btns)
# 1.通過索引來找到指定的標籤
btns[1].click()
# 2.通過屬性來找到指定的標籤
for btn in btns:
    if btn.get_attribute('type') == 'button':
        btn.click()
    time.sleep(3)
    btn.click()
# 3.彈出指定的元素,如果不寫索引,預設為最後一個
driver.find_elements_by_css_selector('button').pop().click()
# [type=button] []裡面為限制條件  限制選擇的內容
driver.find_elements_by_css_selector('button[type=button]').pop().click()

# 4.通過....來找到指定的標籤
driver.find_element(by=By.ID,value='pink').click()

5 window切換

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
# 獲取當前的window物件
current_window = driver.current_window_handle
# 獲取當前視窗編號,和網頁標題
print(current_window,driver.title)
driver.find_element_by_name('tj_trnews').click()
news = WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_css_selector('.hdline0 .a3'))
news.click()
# 輸出所有的視窗
all_windows = driver.window_handles
print(all_windows)
for window in all_windows:
    if window!= current_window:
        # 切換視窗
        driver.switch_to.window(window)

 

 

 

 

 

 

 

 

 

 

相關文章