.. _faq: 附录: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`` 指定了你想要保存下载文件的路径 怎么向文件上传表单上传文件? -------------------------------- 选中 ```` 元素,调用 ``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()