前沿拓展:
firebug下載
軟件介紹:
firebug是一款firefox下的調(diào)試工具,能夠調(diào)試所有網(wǎng)站語言,如來自Html,Css等等。但Fiebug”(小技巧:也可以使用F12快捷鍵打開)
要做web自動(dòng)化,第一件事情就是搭建自動(dòng)化測(cè)試環(huán)境,那就沒法避免地要用到selenium了。
那在搭建環(huán)境和使用過程中經(jīng)常會(huì)遇到以下幾類問題:
1、引入selenium包失敗:
出現(xiàn)這種錯(cuò)誤,一般分為兩種情況:
1、根本沒有安裝selenium庫;
2、安裝了selenium庫,可是在導(dǎo)入的時(shí)候,仍然提示selenium庫不存在。
解決方法:
針對(duì)第1種,那就是麻溜地去安裝selenium庫。pip命令安裝最好??!命令:pip install selenium
針對(duì)2:
1)確認(rèn)你安裝的selenium第三方庫安裝在哪個(gè)python目錄中?并確認(rèn)你的selenium安裝成功;
如何確認(rèn)?安裝的時(shí)候,會(huì)直接輸出你的selenium安裝到了哪里。注意觀察喲。
2)確認(rèn)你的代碼使用的python是哪個(gè),安裝目錄在哪里?是否是1)中對(duì)應(yīng)的python目錄。
以pycharm編輯器為例:
在pycharm當(dāng)中, 每一個(gè)project都會(huì)有一個(gè)External Libraries欄。如下圖:
會(huì)直接顯示你當(dāng)前project所用的python版本以及安裝目錄;
打開其下的site-packages目錄,會(huì)顯示所有安裝的第三方庫。如果能夠找到selenium文件夾,則說是在這個(gè)python版本中是安裝了selenium的
放在你所用python版本的安裝目錄下面。
python selenium webdriver 常見問題FAQ怎么用ChromeDriver ?
從這里下載最新的driver版本并解壓
# 好吧,這個(gè)命令是給linux or osx用戶準(zhǔn)備的
# windows用戶直接手點(diǎn)吧 by 乙醇
unzip chromedriver_linux32_x.x.x.x.zip
你會(huì)得到一個(gè) chromedriver 的可執(zhí)行文件. 現(xiàn)在用下面的代碼就可以了:
driver = webdriver.Chrome(executable_path="/path/to/chromedriver")
# windows如果還不行就把chrome driver扔到python的安裝目錄下 by乙醇Selenium 2支持XPath 2.0嗎?
Selenium把xpath處理委托給了瀏覽器的xpath解析引擎。所以瀏覽器支持什么,selenium就支持什么。如果那些奇葩的瀏覽器沒有xpath引擎的話(IE6,7,8),那么在這些大爺上selenium就只支持xpath1.0了
怎樣才能滾到頁面的底部?
你可以用 execute_script方法來處理這個(gè)。 調(diào)用原生javascript的API,這樣你想滾到哪里就能滾到哪里。
下面的代碼演示了如何滾到頁面的最下面:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
window <http://www.w3schools.com/jsref/obj_window.asp>對(duì)象的 scrollTo <http://www.w3schools.com/jsref/met_win_scrollto.asp> . 方法可以滾到頁面上的任何位置。 scrollHeight <http://www.w3schools.com/jsref/dom_obj_all.asp>是dom元素的通用屬性。document.body.scrollHeight 會(huì)返回body元素的高度,基本上就是頁面的高度了。
如何使用Firefox的profile來自動(dòng)保存下載的文件
第一,你要保存的文件類型你造么?要搞清楚要自動(dòng)下載的文件類型,用 curl就好了
curl -I URL | grep "Content-Type"
另一種方式是使用 requests <http://python-requests.org>_ module, 這樣搞:
import requests
print requests.head('http://www.python.org').headers['content-type']
當(dāng)你確定了content type之后,調(diào)用browser.helperApps.neverAsk.saveToDisk來設(shè)置firefox的profile就好了。
這是例子:
import os
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://pypi.python.org/pypi/selenium")
browser.find_element_by_partial_link_text("selenium-2").click()
上例中, application/octet-stream 就是content type。
browser.download.dir 指定了文件自動(dòng)保存的文件夾。
如何在打開Firefox的同時(shí)打開firebug ?
第一下載Firebug XPI文件(這個(gè)就是friefox的擴(kuò)展程序文件–by乙醇),第二再調(diào)用firefox profile的add_extension方法。
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.add_extension(extension='firebug-1.8.4.xpi')
fp.set_preference("extensions.firebug.currentVersion", "1.8.4") #Avoid startup screen
browser = webdriver.Firefox(firefox_profile=fp)怎么截圖呢?
用webdriver提供的 save_screenshot 方法:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.python.org/')
driver.save_screenshot('screenshot.png')
driver.quit()如何使用默認(rèn)已存在的profile啟動(dòng)firefox?by 乙醇
使用已存在profile啟動(dòng)firefox可以自動(dòng)登陸已經(jīng)登陸過的站點(diǎn)。代碼如下:
fp = webdriver.FirefoxProfile('/path/to/your/existing/profile')
browser = webdriver.Firefox(fp)
這里在windows上有個(gè)坑,就是路徑分隔符在windows上是而不是/,把這個(gè)弄明白第二指定對(duì)路徑基本就可以了。
PS:這里還有另一個(gè)坑。就是如果你使用默認(rèn)的profile的話,請(qǐng)一定關(guān)閉friefox以后再運(yùn)行代碼,否則會(huì)因?yàn)閜rofile的文件鎖問題而發(fā)生異常。就是說一次只能打開一個(gè)firefox實(shí)例,如果你使用默認(rèn)的profile的話。
希望本文對(duì)你有所幫助~~如果對(duì)軟件測(cè)試、接口測(cè)試、自動(dòng)化測(cè)試、面試經(jīng)驗(yàn)交流感興趣可以私聊我或關(guān)注**“特斯汀軟件測(cè)試”。免費(fèi)領(lǐng)取最新軟件測(cè)試大廠面試資料和Python自動(dòng)化、接口、框架搭建學(xué)習(xí)資料!技術(shù)大牛解惑答疑,同行一起交流。
拓展知識(shí):
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請(qǐng)注明出處:http://m.xiesong.cn/95274.html