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