附录:FAQ¶
另外一份FAQ: https://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions
怎样使用 ChromeDriver¶
下载最新的 chromedriver https://sites.google.com/a/chromium.org/chromedriver/downloads, 解压文件:
unzip chromedriver_linux32_x.x.x.x.zip
你应该会看到一个可执行的 chromedriver
,现在你可以像这样创建一个Chrome Driver的实例了:
driver - webdriver.Chrome(executable_path="/path/to/chromedriver")
使用例子的剩余部分在其他文档里已经给出了
Selenium 2 支持 XPath 2.0 吗?¶
相关链接: http://seleniumhq.org/docs/03_webdriver.html#how-xpath-works-in-webdriver
Selenium 委托 XPath 去查询浏览器自己的XPath引擎,因此浏览器支持什么XPath,Selenium就支持什么。 在不支持XPath引擎的浏览器里(IE 6,7,8),Selenium仅支持 XPath 1.0
怎么滚动到页面的底部?¶
相关链接:http://blog.varunin.com/2011/08/scrolling-on-pages-using-selenium.html
你可以使用 execute_script
方法来在载入的页面上执行JS,因此,你可以调用JS的API来滚动到页面的底部或者其他任意位置。
下面是一个滚动到底部的实例:
driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
DOM的窗口对象有一个 [scrollTo] http://www.w3schools.com/jsref/met_win_scrollto.asp 方法来在打开的窗口中滚动到任意位置,
scrollHeight http://www.w3schools.com/jsref/dom_obj_all.asp 是所有元素的一个通用属性,
document.body.scrollHeight``是页面整个 ``body
的高度
怎样使用定制的 Firefox profile自动保存文件¶
相关链接:
http://stackoverflow.com/questions/1176348/access-to-file-download-dialog-in-firefox
http://blog.codecentric.de/en/2010/07/file-downloads-with-selenium-mission-impossible/
第一步:确定你想要自己保存的文件类型。要确认你想自动下载的内容类型,你可以使用 curl:
curl -I URL|grep "Content-Type"
另外一个找出内容类型的方法是使用 [requests模块](http://python-requests.org/):
import requests
content_type = requests.head('http://www.python.org').headers['content-type']
print(content_type)
一旦你确定了内容类型,你就可以设置 firefox profile相关: browser.helperApps.neverAsk.saveToDisk
下面是一个实例:
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
这个内容类型, browser.download.dir
指定了你想要保存下载文件的路径
怎么向文件上传表单上传文件?¶
选中 <input type="file">
元素,调用 send_keys()
方法,传递文件的路径。可以传递绝对路径或者相对测试脚本的路径。
要注意windows和Unix系统路径名的差异
如何使用firebug?¶
首先下载Firebug XPI 文件,然后调用 add_extension
方法:
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.add_extension(extension='firebug-1.8.4.xpi')
fp.set_preference("extension.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()