另外一个FAQ:https://github.com/SeleniumHQ/selenium/wiki/Frequently-Asked-Questions

8.1.怎样使用ChromeDriver

chromedriver 下载页下载版(译者注:需翻墙)。解压压缩包:

unzip chromedriver_linux32_x.x.x.x.zip

你应该看到一个chromedriver可执行文件。接着你就可以像下面这样创建一个WebDriver实例:

driver = webdriver.Chrome(executable_path="/path/to/chromedriver")

示例的其他部分参考其他文档中的介绍。

8.2.Selenium2支持XPATH2.0吗?

参考:http://seleniumhq.org/docs/03_webdriver.html#how-xpath-works-in-webdriver

Selenium使用的XPath取决于浏览器本身的XPath引擎。也就是说你使用的浏览器支持什么版本的XPath,Selenium就支持什么版本的XPath。如果使用不自带XPath引擎的浏览器(比如,IE5,7,8),Selenium将只支持XPath1.0。

8.3.怎样滚动到页面底部?

参考:http://blog.varunin.com/2011/08/scrolling-on-pages-using-selenium.html

你可以在加载页面的时候使用execute_script方法执行javascript代码。所以,你可以调用Javascript API滚动到页面的底部或其他任意位置。

下面是滚动到页面底部的示例:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

DOM中的window对象有一个scroll方法,用来滚动到窗口的任意位置。scrollHeight是所有元素的一个通用属性。document.body.scrollHeight标识页面整个body的高度。

8.4.怎样使用地址的火狐配置文件自动保存文件?

参考-1:http://stackoverflow.com/questions/1176348/access-to-file-download-dialog-in-firefox

参考-2:http://blog.codecentric.de/en/2010/07/file-downloads-with-selenium-mission-impossible/

首先先识别你要保存的文件的文件类型。

要识别你要自动下载的文件的content-type,可以使用curl+grep命令:

curl -I URL | grep "Content-Type"

另外一种办法是使用requests模块来找到content-type,简单示例如下:

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

识别出content-type之后,你就可以使用它来设置火狐配置文件的配置:

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()

在上面的示例中,content-type被设置为 application/octet-stream

browser.download.dir选项用来指定你想要将下载的文件保存的目录。

8.5.怎样通过file input上传文件?

选取<input type="file">元素,调用send_keys方法,给其传递一个文件路径(绝对路径和相对路径均可)。但是请注意Windows系统和Unix系统路径名称的差异。

8.6.怎样在火狐的Firefox?

首先下载FireBug XPI文件,接着你就可以调用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") #避免启动界面
browser = webdriver.Firefox(firefox_profile=fp)

8.7.怎样对当前窗口截图?

使用web'driver提供的save_screenshot方法:

rom selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://www.python.org/')
driver.save_screenshot('screenshot.png')
driver.quit()

[译]Selenium Python文档:八、附录:FAQ常见问题的更多相关文章

  1. [译]Selenium Python文档:目录

    作者:Baiju Muthukadan 协议:本文档采用知识共享署名 - 共享4.0国际许可. 原英文网址:http://selenium-python.readthedocs.io/index.ht ...

  2. [译]Selenium Python文档:一、安装

    1.1.简介 Selenium Python为使用Selenium WebDriver来编写功能/验证测试提供了一个简单的API接口.通过Selenium Python API,你可以以一种非常直观的 ...

  3. [译]Selenium Python文档:四、元素定位

    要定位一个页面中的元素有多中策略和方法.你可以根据实际情况选择其中最为合适的.Selenium为定位页面元素提供了下面的这些方法: find_element_by_id(使用id) find_elem ...

  4. [译]Selenium Python文档:七、WebDriver API接口

    由于API文档格式不太适合cnblog博客,暂且翻译一部分,且暂未校对 注意:这不是官方文档,官方 API文档在这里. 本章包含Selenium WebDriver的所有接口 推荐import风格 本 ...

  5. [译]Selenium Python文档:二、初步开始

    2.1.简单使用 如果已经安装好了Selenium Python,你就可以像下面这样编写Python代码来使用它了: from selenium import webdriver from selen ...

  6. [译]Selenium Python文档:五、Waits等待

    大多数现代web应用都使用了AJAX技术.当浏览器加载一个页面的时候,该页面内的元素可能在不用的时间间隔内进行加载.这使得元素定位变得比较困难:如果一个元素还没有出现在DOM中,定位函数将会抛出一个E ...

  7. [译]Selenium Python文档:六、页面对象

    本章是介绍页面对象设计模式的教程.一个页面对象代表了web应用用户接口的一片区域,你的测试代码将与之交互的. 使用页面对象模式的好处: 可以创建在多个测试样例中都可使用的可重用代码 减少重复性代码 如 ...

  8. [译]Selenium Python文档:三、导航控制

    你使用WebDriver要做的第一件事就是访问一个链接.一般通过调用get方法来实现: driver.get("http://www.baidu.com") 在将控制权返给你的脚本 ...

  9. 基于 Python 官方 GitHub 构建 Python 文档

    最近在学 Python,所以总是在看 Python 的官方文档, https://docs.python.org/2/ 因为祖传基因的影响,我总是喜欢把这些文档保存到本地,不过 Python 的文档实 ...

随机推荐

  1. [JavaScript] 学习笔记-JavaScript基础教程

    1.JavaScript介绍 1)JavaScript是互联网上最流行的脚本语言,这门语言可用于Web和HTML,更可广泛用于服务器.pc端.移动端.JavaScript是一种轻量级的编程语言,插入H ...

  2. 源码(09) -- java.util.Arrays

    java.util.Arrays 源码分析 ------------------------------------------------------------------------------ ...

  3. UIApplication 和 Appdelegate-----iOS

    正文 一 UIApplication 1.一个UIApplication代表是一个应用程序,而且是单例的.一个程序也只能有一个UIApplication对象 2.获取UIApplication对象: ...

  4. Unity预计算光照的学习(速度优化,LightProb,LPPV)

    1.前言 写这篇文章一方面是因为unity的微博最近出了关于预计算光照相关的翻译文章,另一方面一些美术朋友一直在抱怨烘培速度慢 所以抱着好奇的心态来学习一下unity5的PRGI预计算实时光照 2.基 ...

  5. VMware虚拟网络连接模式详解(NAT,Bridged,Host-only)

    序言 如果你使用VMware安装虚拟机,那么你必定会选择网络连接,那么vmware提供主要的3种网络连接方式,我们该如何抉择呢?他们有什么不同呢?这篇我们就做一个深入. 首先打开虚拟机设置里面的网络适 ...

  6. SDOI Day1

    好了做了SDOI day1的3道题,来讲下做法及感想吧 T1:排序(暴力,搜索) 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3990 我们可 ...

  7. BZOJ 1033: [ZJOI2008]杀蚂蚁antbuster(模拟)

    坑爹的模拟题QAQ DEBUG多了1kb QAQ 按题意做就行了 注意理解题意啊啊啊啊 尼玛输出忘换行wa了3次QAQ CODE: #include<cstdio>#include< ...

  8. BZOJ 1050: [HAOI2006]旅行comf (并查集 或 单调队列)

    这是建空间后做的第一道题啊= =好水 排序,枚举最小边,然后并查集求出联通时的最大边 或者排次序,从小到大插边,如果插边时最小的边拿掉不会使s与t不联通,就删去。 code: #include< ...

  9. 剑指offer编程题Java实现——替换空格

    题目描述 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. package ...

  10. linux oracle 10g 安装时 .bash_profile的设置

    export ORACLE_BASE=/home/oracle/oracle10g export ORACLE_SID=ccpbs export ORACLE_HOME=$ORACLE_BASE/pr ...