[Python爬虫] Selenium自动访问Firefox和Chrome并实现搜索截图
? ? ? ? 前兩篇文章介紹了安裝,此篇文章算是一個(gè)簡(jiǎn)單的進(jìn)階應(yīng)用吧!它是在Windows下通過(guò)Selenium+Python實(shí)現(xiàn)自動(dòng)訪問(wèn)Firefox和Chrome并實(shí)現(xiàn)搜索截圖的功能。
? ? ? ??[Python爬蟲(chóng)] 在Windows下安裝PhantomJS和CasperJS及入門介紹(上)
? ? ? ??[Python爬蟲(chóng)] 在Windows下安裝PIP+Phantomjs+Selenium
自動(dòng)訪問(wèn)Firefox
? ? ? ? 可以參照前文安裝Selenium環(huán)境,目前Selenium這個(gè)用于Web應(yīng)用程序測(cè)試的工具支持的瀏覽器包括IE、Mozilla Firefox、Mozilla Suite、Chrome等。但是由于Firefox是默認(rèn)安裝路徑,webdriver可以正常訪問(wèn)它,而Chrome和IE需要設(shè)置driver路徑。
? ? ? ? assert "谷歌" in driver.title?AssertionError
? ? ? ? 官方文檔地址:http://selenium-python.readthedocs.org/getting-started.html
from selenium import webdriver
? ? ? ?from selenium.webdriver.common.keys import Keys
? ? ? ?import sys
reload(sys)
? ? ? ?sys.setdefaultencoding('gb18030')?
? ? ? ??UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33
? ? ? ??UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 35
? ? ? ? 所以此處轉(zhuǎn)換成gb編碼,該篇不重點(diǎn)介紹了。
driver = webdriver.Firefox()
? ? ? ?driver.get("http://www.baidu.com")
assert "百度" in driver.title
? ? ? ?assert "谷歌" in driver.title
? ? ? ? 同時(shí)提交頁(yè)面并獲得返回結(jié)果,為了判斷結(jié)果是否成功返回也可以使用斷言。
elem = driver.find_element_by_name("wd")
? ? ? ? webdriver提供了很多如find_element_by_*的方法來(lái)匹配要查找的元素。如利用name屬性查找方法find_element_by_name來(lái)定位輸入框,審查元素name=wd。? ? ? ? 元素定位方法可以參考官網(wǎng):Locating Elements
elem.send_keys("Eastmount")
elem.send_keys(Keys.RETURN)
? ? ? ? send_keys方法可以用來(lái)模擬鍵盤操作,相當(dāng)于是在搜索框中輸入“Eastmount”再按回車鍵搜索。但首先要從selenium.webdriver.common.keys導(dǎo)入Keys類。driver.save_screenshot('baidu.png')
driver.close()
driver.quit()
自動(dòng)訪問(wèn)Chrome
? ? ? ? 首先下載chromedriver并置于Chrome安裝目錄。可能會(huì)遇到錯(cuò)誤:
? ? ? ??WebDriverException: Message: 'chromedriver' executable needs to be in PATH.參考官網(wǎng)解決方法:How to use chromedriver,我采用的是設(shè)置driver環(huán)境。
? ? ? ? 代碼如下:
import os from selenium import webdriver from selenium.webdriver.common.keys import Keyschromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe" os.environ["webdriver.chrome.driver"] = chromedriverdriver = webdriver.Chrome(chromedriver) driver.get("http://www.python.org") assert "Python" in driver.title elem = driver.find_element_by_name("q") elem.send_keys("selenium") elem.send_keys(Keys.RETURN) assert "Google" in driver.title driver.close() driver.quit()? ? ? ? 需要放置chromedriver如下路徑,同時(shí)可以通過(guò)代碼設(shè)置。但是由于我的Chrome可能Bug一直未修復(fù),總是打開(kāi)錯(cuò)誤。
driver = webdriver.Chrome(executable_path="G:\chromedriver.exe")
參考資料: ? ? ? ??用python玩轉(zhuǎn)selenium:2-入門實(shí)例及分析 -?Reiki
? ? ? ??構(gòu)建Python+Selenium2自動(dòng)化測(cè)試環(huán)境<二>:IE、Chrome和Firefox運(yùn)行
? ? ? ??用selenium實(shí)現(xiàn)某微博搜索數(shù)據(jù)的抓取
? ? ? ??RobotFramework+seleniumlibrary Web自動(dòng)化測(cè)試 (三)
? ? ? ??最后希望該篇基礎(chǔ)性文章對(duì)你有所幫助吧!如果有不足之處,還請(qǐng)海涵~
? ? ? (By:Eastmount 2015-8-20 下午4點(diǎn) ??http://blog.csdn.net/eastmount/)
總結(jié)
以上是生活随笔為你收集整理的[Python爬虫] Selenium自动访问Firefox和Chrome并实现搜索截图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [Python爬虫] 在Windows下
- 下一篇: [Python爬虫] Selenium实