Python-Selenium基本操做

1、簡介

selenium一個核心是WebDriver,WebDriver啓動目標瀏覽器,並綁定到指定端口,而後與該端口直接進行通訊。php

安裝selenium:css

pip install selenium

在使用的時候可能遇到下面的錯誤:html

'geckodriver' executable needs to be in PATH
'chromedriver' executable needs to be in PATH

說明須要driver,Firefox能夠經過:geckodriver下載python

Chrome要先看一下對應的版本,在Chrome瀏覽器中輸入:git

chrome://version/

chrome-version

而後能夠到下面的地址下載對應版本的driver: chromedriver下載1github

chromedriver下載2web

下載以後最後放在path中,對於python來講,能夠放在安裝目錄的scripts目錄下chrome

driver

2、打開連接

from selenium import webdriver

browser = webdriver.Firefox()
# browser = webdriver.Firefox(executable_path=r'C:\soft\lan\python3\Scripts\geckodriver.exe')
# browser = webdriver.Chrome()
browser.get("https://www.baidu.com/index.php?tn=monline_3_dg")

若是driver沒有放在path目錄中,那麼就能夠指定了driver的存放路徑。npm

3、打開本地文件

from selenium import webdriver

driver = webdriver.Firefox()

file_path = r'file:///F:\tmp\table.html'
driver.get(file_path)

webdriver不單單能夠打開本地的文件,這很是方便我調試。api

4、操做瀏覽器

from selenium import webdriver
import time

SLEEP_TIME = 3

driver = webdriver.Firefox()

file_path = r'file:///F:\tmp\table.html'
driver.get(file_path)
# 暫停一個時間,方便觀察執行的操做
time.sleep(SLEEP_TIME)

# 設置瀏覽器寬400、高400
driver.set_window_size(400, 400)
time.sleep(SLEEP_TIME)

# 將瀏覽器最大化顯示
driver.maximize_window()
time.sleep(SLEEP_TIME)

driver.get("https://www.baidu.com/index.php?tn=monline_3_dg")
time.sleep(SLEEP_TIME)

# 回退一個頁面
driver.back()
time.sleep(SLEEP_TIME)

# 前進一個頁面
driver.forward()
time.sleep(SLEEP_TIME)

# 關閉當前窗口
driver.close()
time.sleep(SLEEP_TIME)

# 並關瀏覽器
driver.quit()

如上webdriver提供了不少操做瀏覽器的接口,通常比較少用,由於咱們不少時候都不但願打開瀏覽器,只但願獲取結果。

# options = webdriver.FirefoxOptions()
options = webdriver.ChromeOptions()
options.headless = True
# driver = webdriver.Firefox(options=options)
driver = webdriver.Chrome(options=options)

若是不想打開瀏覽器,能夠headless設置爲True

5、執行JS

不少時候,咱們但願藉助於JS的強大功能,因此咱們須要執行JS,好比咱們要滾動窗口,webdriver並無提供相應的接口,咱們就能夠經過JS來實現。

from selenium import webdriver
import time

SLEEP_TIME = 3

driver = webdriver.Firefox()

file_path = r'file:///F:\tmp\table.html'
driver.get(file_path)
time.sleep(SLEEP_TIME)

# 將頁面滾動條拖到底部
jsCode = r"document.documentElement.scrollTop=100000"
driver.execute_script(jsCode)

time.sleep(SLEEP_TIME)

# 將滾動條移動到頁面的頂部
jsCode = r"document.documentElement.scrollTop=0"
driver.execute_script(jsCode)
time.sleep(SLEEP_TIME)

# 獲取h1元素並隱藏,把nav的字體顏色修改成blue
h1 = driver.find_element_by_tag_name('h1')
nav = driver.find_element_by_id('nav')
driver.execute_script(r'arguments[0].style.display="none";arguments[1].style.color="blue"', h1, nav)
time.sleep(SLEEP_TIME)

# 並關瀏覽器
driver.quit()

獲取元素能夠參考前面提到的獲取元素的介紹,在JS中可使用arguments參數,arguments是一個數組,存放的就是傳入的元素參數。

table.html的內容以下:

<!DOCTYPE html>
<html>
<head>
    <title>title</title>
    <style type="text/css">
        #container{
            height: 10000px
        }
        #nav{
            height: 20px;
            width: 800px;
            font-size: 30px;
            color: red;
        }
    </style>
</head>
<body>
<h1 name="th1">This is H1</h1>
<div id="nav">nav</div>
<div id="container"></div>
<div>footer</div>
</body>
</html>
相關文章
相關標籤/搜索