是不是我的二十歲,註定要爲selenium掉眼淚

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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章