1.常见问题

1.1 如何使用ChromeDriver?

下载最新的chromedriverchromedriver from download page,解压文件:

unzip chromedriver_linux32_x.x.x.x.zip

解压后,会看到chromedriver的二进制文件。然后可以像这样创建Chrome WebDriver实例:   driver = webdriver.Chrome(executable_path="/path/to/chromedriver")

1.2 Selenium 2是否支持XPath2.0?

参考 http://seleniumhq.org/docs/03_webdriver.html#how-xpath-works-in-webdriver Selenium 将XPath查询委派给浏览器自己的XPath引擎查询,所以Selenium支持的XPath取决于浏览器的支持。如果浏览器没有XPath引擎(如IE6,7,8),则Selenium就支持XPath1.0.

1.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);")

windowDOM对象中有scrollTo方法可以滚动到打开窗口的任意位置。scrollHeight是所有元素的公共部分。document.body.scrollHeight会提供页面的整个高度。

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

当content类型被识别后,可以用来进行firefox的偏好设置: browser.helperApps.neverAsk.saveToDisk

示例如下:    import os

from selenium import webdriver

fp = webdriver.FirefoxProfile()

fp.set_preference("browser.download.folerList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.nerverAsk.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用作content类型。
browser.download.dir 选项指定需要下载文件的目录。

1.5 如何上传文件到文件输入?

选择元素并调用send_keys()方法传递路径,相对test scipt的相对路径,或绝对路径。注意Windows和unix系统直接路径的差异性。

1.6 如何使用Firefox中的firebug?

首先下载Firebug XPI文件,然后调用add_extension方法进行firefox profile:

from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.add_extension(extension='firebug-1.8.4.xpi')
fp.get_preference("extensions.firebug.currentVersion", "1.8.4") #Avoid startup screen
browser = webdriver.Firefox(firefox_profile=fp)

1.7 如何获取当前窗口的截屏

使用webdriver提供的save_screenshot方法获取。

from selenium import webdriver

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

Top^

上一篇Selenium主题9

下一篇selenium-Sample(一)

by 李鹏