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进行指定次数的轮询...

阅读全文...

4.Selenium Python元素定位


元素定位

我们有许多方法对页面的元素进行定位,你可以根据自己的需要选择最合适的一种。Selenium提供了下面的方法进行元素定位: find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag_name find_element_by_class_name find_element_by_css_selector

寻找多个元素(下列方法会返回一个list,其余使用方式相...

阅读全文...

3.Selenium Python导航


导航

你用WebDriver要做的第一件事就是指定一个链接,一般我们使用get方法:

driver.get("http://www.google.com")

WebDriver会等待页面完全加载完(就是onload函数被触发了),才把程序的控制权交给你的测试或者脚本。 但是如果你的页面用了太多的AJAX,那么这个机制就没什么卵用了,因为它不知道页面到底是什么时候加载完。如果你需要确定页面完全加载完了,你可以使用waits

页面交互

我们比较喜欢做的事情就是和页面交互,准确的说,是和页面里的HTML元素交互。首先,我们要找到一个元素,WebDrive提供了许多方法查找元素,例如,给定一个这...

阅读全文...