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
from selenium.common.exceptions import TimeoutException,NoSuchElementException
from time import sleep
import random
def use_selenium():
# 聲明瀏覽器對象
browser = webdriver.Chrome()
# get方法請求網頁
browser.get("https://www.taobao.com/")
# 輸出網頁源代碼
print(browser.page_source)
# 關閉瀏覽器
browser.close()
def use_select():
# 聲明瀏覽器對象
browser = webdriver.Chrome()
# get方法請求網頁
browser.get("https://www.taobao.com/")
# 查找單個節點
input = browser.find_element_by_xpath("//*[@id='q']")
print(input)
# 關閉瀏覽器
browser.close()
def use_selects():
# 聲明瀏覽器對象
browser = webdriver.Chrome()
# get方法請求網頁
browser.get("https://www.taobao.com/")
# 查找多個節點
input = browser.find_elements_by_css_selector('.service-bd a')
print(input)
# 關閉瀏覽器
browser.close()
def user_interaction():
# 聲明瀏覽器對象
browser = webdriver.Chrome()
# get方法請求網頁
browser.get("https://www.taobao.com/")
# 查找單個節點
input = browser.find_element_by_xpath("//*[@id='q']")
# 輸入
input.send_keys("口紅")
sleep(1)
print(input)
butten = browser.find_element_by_css_selector('.search-bd .search-panel .search-button .btn-search')
# 點擊
butten.click()
# 關閉瀏覽器
browser.close()
def user_execute_script():
# 聲明瀏覽器對象
browser = webdriver.Chrome()
# get方法請求網頁
browser.get("https://www.taobao.com/")
for i in range(0,1000,50):
# 輸出現在的高度
check_height = browser.execute_script("return document.body.scrollHeight;")
# 暫停時間
t = random.uniform(1, 3)
sleep(t)
# 滾動距離
h = random.uniform(0, 50)
browser.execute_script("window.scrollBy(0,{0})".format(h))
# 滾動之後的高度
check_height1 = browser.execute_script("return document.body.scrollHeight;")
# 兩次對比
print(str(check_height) + '**************' + str(check_height1))
print("end")
def use_implicitly_wait():
"""隱式等待"""
# 聲明瀏覽器對象
browser = webdriver.Chrome()
# 沒有找到,等待一段時間後繼續查找
browser.implicitly_wait(10)
# get方法請求網頁
browser.get("https://www.taobao.com/")
# 查找單個節點
input = browser.find_element_by_xpath("//*[@id='q']")
print(input)
# 關閉瀏覽器
browser.close()
def use_wait():
"""隱式等待"""
# 聲明瀏覽器對象
browser = webdriver.Chrome()
# get方法請求網頁
browser.get("https://www.taobao.com/")
# 如果在規定時間找到了節點,則返回該節點,否則,拋出異常
wait = WebDriverWait(browser,10)
# 查找單個節點
input = wait.until(ec.presence_of_element_located((By.ID,'q')))
print(input)
# 關閉瀏覽器
browser.close()
def use_forward_back():
"""前進和後退"""
# 聲明瀏覽器對象
browser = webdriver.Chrome()
# get方法請求網頁
browser.get("https://www.baidu.com/")
browser.get("https://www.taobao.com/")
browser.get("http://111.43.36.169/meol/index.do")
# 後退
browser.back()
sleep(1)
# 前進
browser.forward()
sleep(2)
# 後退
browser.back()
# 後退
browser.back()
# 關閉瀏覽器
browser.close()
def use_cookies():
"""小餅乾"""
# 聲明瀏覽器對象
browser = webdriver.Chrome()
# get方法請求網頁
browser.get("https://www.baidu.com/")
print(browser.get_cookies())
# browser.add_cookie({})
# 關閉瀏覽器
browser.close()
def use_cookies():
"""選項卡"""
# 聲明瀏覽器對象
browser = webdriver.Chrome()
# 開啓選項卡
browser.execute_script('window.open()')
# window_handles 獲取開啓的選項卡列表
print(browser.window_handles)
# switch_to.window 切換選項卡
browser.switch_to.window(browser.window_handles[1])
browser.get("https://www.baidu.com/")
sleep(3)
browser.switch_to.window(browser.window_handles[0])
browser.get("https://www.taobao.com/")
# 關閉瀏覽器
browser.close()
def use_try_except():
"""異常處理"""
# 聲明瀏覽器對象
browser = webdriver.Chrome()
try:
browser.get("https://www.baidu.com/")
except TimeoutException:
print("Time Out")
try:
input = browser.find_element_by_xpath("//*[@id='q']")
print(input)
except NoSuchElementException:
print("No Element")
# 出現異常之後就會關閉瀏覽器所以再寫finally的時候,意義不大,反而會報錯
# finally:
# browser.close()
if __name__ == '__main__':
use_selenium()
use_select()
use_selects()
user_interaction()
user_execute_script()
use_implicitly_wait()
use_wait()
use_forward_back()
use_cookies()
use_try_except()
是不是我的二十歲,註定要爲selenium掉眼淚
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.