附录:FAQ
另外一份FAQ:https://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions
怎样使用 ChromeDriver
下载最新的chromedriver,解压文件:
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 方法来在打开的窗口中滚动到任意位置,
scrollHeight是所有元素的一个通用属性,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模块:
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()