前沿拓展:
firebug下載
軟件介紹:
firebug是一款firefox下的調(diào)試工具,能夠調(diào)試所有網(wǎng)站語言,如來自Html,Css等等。但Fiebug”(小技巧:也可以使用F12快捷鍵打開)
要做web自動化,第一件事情就是搭建自動化測試環(huán)境,那就沒法避免地要用到selenium了。
那在搭建環(huán)境和使用過程中經(jīng)常會遇到以下幾類問題:
1、引入selenium包失敗:
出現(xiàn)這種錯誤,一般分為兩種情況:
1、根本沒有安裝selenium庫;
2、安裝了selenium庫,可是在導(dǎo)入的時候,仍然提示selenium庫不存在。
解決方法:
針對第1種,那就是麻溜地去安裝selenium庫。pip命令安裝最好??!命令:pip install selenium
針對2:
1)確認(rèn)你安裝的selenium第三方庫安裝在哪個python目錄中?并確認(rèn)你的selenium安裝成功;
如何確認(rèn)?安裝的時候,會直接輸出你的selenium安裝到了哪里。注意觀察喲。
2)確認(rèn)你的代碼使用的python是哪個,安裝目錄在哪里?是否是1)中對應(yīng)的python目錄。
以pycharm編輯器為例:
在pycharm當(dāng)中, 每一個project都會有一個External Libraries欄。如下圖:
會直接顯示你當(dāng)前project所用的python版本以及安裝目錄;
打開其下的site-packages目錄,會顯示所有安裝的第三方庫。如果能夠找到selenium文件夾,則說是在這個python版本中是安裝了selenium的
放在你所用python版本的安裝目錄下面。
python selenium webdriver 常見問題FAQ怎么用ChromeDriver ?
從這里下載最新的driver版本并解壓
# 好吧,這個命令是給linux or osx用戶準(zhǔn)備的
# windows用戶直接手點吧 by 乙醇
unzip chromedriver_linux32_x.x.x.x.zip
你會得到一個 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方法來處理這個。 調(diào)用原生javascript的API,這樣你想滾到哪里就能滾到哪里。
下面的代碼演示了如何滾到頁面的最下面:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
window <http://www.w3schools.com/jsref/obj_window.asp>對象的 scrollTo <http://www.w3schools.com/jsref/met_win_scrollto.asp> . 方法可以滾到頁面上的任何位置。 scrollHeight <http://www.w3schools.com/jsref/dom_obj_all.asp>是dom元素的通用屬性。document.body.scrollHeight 會返回body元素的高度,基本上就是頁面的高度了。
如何使用Firefox的profile來自動保存下載的文件
第一,你要保存的文件類型你造么?要搞清楚要自動下載的文件類型,用 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 指定了文件自動保存的文件夾。
如何在打開Firefox的同時打開firebug ?
第一下載Firebug XPI文件(這個就是friefox的擴展程序文件–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啟動firefox?by 乙醇
使用已存在profile啟動firefox可以自動登陸已經(jīng)登陸過的站點。代碼如下:
fp = webdriver.FirefoxProfile('/path/to/your/existing/profile')
browser = webdriver.Firefox(fp)
這里在windows上有個坑,就是路徑分隔符在windows上是而不是/,把這個弄明白第二指定對路徑基本就可以了。
PS:這里還有另一個坑。就是如果你使用默認(rèn)的profile的話,請一定關(guān)閉friefox以后再運行代碼,否則會因為profile的文件鎖問題而發(fā)生異常。就是說一次只能打開一個firefox實例,如果你使用默認(rèn)的profile的話。
希望本文對你有所幫助~~如果對軟件測試、接口測試、自動化測試、面試經(jīng)驗交流感興趣可以私聊我或關(guān)注**“特斯汀軟件測試”。免費領(lǐng)取最新軟件測試大廠面試資料和Python自動化、接口、框架搭建學(xué)習(xí)資料!技術(shù)大牛解惑答疑,同行一起交流。
拓展知識:
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請注明出處:http:///95274.html