分类标签归档:selenium

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

使用示例的剩余部分在其...

阅读全文...

7.WebDriver API


WebDriver API

注意,这不是官方文档,官方的API文档在这里

这一章涵盖了所有的Selenium WebDriver接口。

推荐的引入风格

这一章里面API的定义已经展示了类的绝对位置,不过推荐使用下面引入风格:

from selenium import webdriver

然后你就可以这样使用这个类:

webdriver.Firefox
webdriver.FirefoxProfile
webdriver.Chrome
webdriver.ChromeOptions
webdriver.Ie
webdriver.Opera
webdriver.Phantomjs
webdr...

阅读全文...

7.6 浏览驱动


Firefox WebDriver

class selenium.webdriver.firefox.webdriver.WebDriver(firefox_profile=None, firefox_binary=None, timeout=30, capabilities=None, proxy=None, executable_path='wires')

quit()

退出驱动,关闭所有关联的窗口

NATIVE_EVENTS_ALLOWED = True

firefox_profile

Chrome WebDriver

class selenium.webdriver.chrome...

阅读全文...

7.5 用按类定位


用按类定位

许多属性都可以用作定位元素,参见(4.元素定位)查看更多实例

selenium.webdriver.common.by.By类

支持的定位策略:

类方法is_valid(by)

CLASS_NAME ='班级名称'

CSS_SELECTOR ='css选择器'

ID ='id'

LINK_TEXT ='链接文字'

NAME ='名称'

PARTIAL_LINK_TEXT ='部分链接文字'

TAG_NAME ='标签名称'

XPATH ='xpath'

期望的功能

请到2.开始查看期望功能的实例

selenium.webdriver.common.desired_capabi...

阅读全文...

7.4 特殊字符


特殊字符

selenium.webdriver.common.keys.Keys类

下面是一些特殊字符的代码:

ADD = u'\ ue025'

ALT = u'\ ue00a'

ARROW_DOWN = u'\ ue015'

ARROW_LEFT = u'\ ue012'

ARROW_RIGHT = u'\ ue014'

ARROW_UP = u'\ ue013'

BACKSPACE = u'\ ue003'

BACK_SPACE = u'\ ue003'

取消= u'\ ue001'

清除= u'\ ue005'

COMMAND = u'\ ue03d'

CONTROL = u'\ ...

阅读全文...

7.3 警告框


警告框

class selenium.webdriver.common.alert.Alert(driver)

允许对警告框进行操作

使用这个类和警告提醒框进行交互,这个类包含了 忽略、接受、输入 以及从提示框内获取文本的方法

接受和忽略弹框:

Alert(driver).accept()
Alert(driver).dismiss()

prompt里输入字符:

name_prompt = Alert(driver)
name_prompt.send_keys("Willian Shakephere")
name_prompt.accept()

读取prompt的提示字符:

alert_...

阅读全文...

7.2 Selenium Python行为链


行为链

class selenium.webdriver.common.action_chains.ActionChains(driver)

ActionChains可以完成简单的交互行为,例如鼠标移动,鼠标点击事件,键盘输入,以及内容菜单交互。这对于模拟那些复杂的类似于鼠标悬停和拖拽行为很有用

产生用户行为

当你在ActionChains对象上调用行为方法时,这些行为会存储在ActionChains对象的一个队列里。调用perform()时,这些动作就以他们队列的顺序来触发

ActionChains可以使用链式模型:

menu = driver.find_element_by_css_...

阅读全文...

7.1 Selenium Python异常


异常

所有的页面驱动代码里都可能抛出异常。

exception selenium.common.exceptions.ElementNotSelectableException(msg=None,screen=None,stacktrace=None)

基于 selenium.common.exceptions.InvalidElementStateException

当试图选中一个不能选中的元素时抛出 例如,选中一个script元素

exception selenium.common.exceptions.ElementNotVisibleException(msg=None,scre...

阅读全文...

6.Selenium Python页面对象


页面对象

这章是对 页面对象设计模型的特别指导。一个页面对象代表了你要测试的用户接口交互的区域。

使用页面对象模型的好处: 可以写出能在多个测试案例里复用的代码 减少重复代码 * 如果用户接口更改,只需要在一个地方做相应修改即可

测试案例

下面这个测试案例测试了在python.org网页上搜索一个单词并确认有相应的搜索结果:

import unittest
from selenium import webdriver
import page

class PythonOrgSearch(unittest.TestCase):
    """一个简单展示页面对象如何工作的类"""

   ...

阅读全文...

5.Selenium Python等待事件


Waits

现在很多Web应用都在使用AJAX技术。浏览器载入一个页面时,页面内的元素可能是在不同的时间载入的,这会加大定位元素的困难程度,因为元素不在DOM里,会抛出ElementNotVisibleException异常,使用waits,我们就可以解决这个问题。Waiting给(页面)动作的执行提供了一些时间间隔-通常是元素定位或者其他对元素的操作。

Selenium WebDriver提供了两类waits- 隐式和显式。显式的waits会让WebDriver在更深一步的执行前等待一个确定的条件触发,隐式的waits则会让WebDriver试图定位元素的时候对DOM进行指定次数的轮询...

阅读全文...