8. 附录:常见问题


附录:常见问题

另外一份常见问题解答: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个人资料自动保存文件

相关链接: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"

另外一个发现内容类型的方法是使用请求模块:

import requests
content_type = requests.head('http://www.python.org').headers['content-type']
print(content_type)

一旦你确定了内容类型,你就可以设置firefox profilebrowser.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()方法,传递文件的路径。可以传递绝对路径或者相对测试脚本的路径。要注意和窗户的Unix系统路径名的差异

如何使用萤火虫?

首先下载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()