python自动化测试web页面组成_50.[Python]使用Selenium包做Web页面自动化测试详解(2)...

处理cookie时,需要webdriver先访问到合法的cookie域,添加cookie然后再次访问即可,比如(name和value字段分别表示cookie的键和值):

ff.get('http://localhost:5000/')

ff.add_cookie({'name': 'username', 'value': 'marsloo'})

ff.get('http://localhost:5000/')

# 获取当前域的cookies

print ff.get_cookies()

上述代码的输出可能为:

[{u'domain': u'localhost', u'name': u'username', u'value': u'marsloo', u'expiry': None, u'path': u'', u'httpOnly': False, u'secure': False}]

如果请求的页面使用了长期的AJAX,Selenium不会等待其请求完成后再将控制权交给脚本。为了恰当定位到所需的元素,需要使用Selenium的等待功能,最简单的是这种:

# 对于所有元素获取,会等待3秒

ff.implicitly_wait(3)

try:

a = ff.find_element_by_partial_link_text('g')

a.click()

except NoSuchElementException:

print "Page load fail or no such element"

在每一个浏览器会话中只应该调用一次implicitly_wait方法。如果相对每个元素获得更改不同的超时时间firefox50 selenium,可以这样做(其他最具体的代码可以在我的github项目获得):

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.common.exceptions import TimeoutException

@auto_close

def func():

try:

a = WebDriverWait(ff, 3).until(

EC.presence_of_element_located((By.TAG_NAME, "p")))

a.click()

except TimeoutException:

print "No such element"

上述代码中的(By.TAG_NAME, "p")元组,在以下的解释中以locator参数代替。expected_conditions对象也有这些方式可以使用:

使用Chrome进行检测,需要先下载Chrome Driver (可能必须翻墙),解压缩后代码如下:

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

首先下载Opera Driver,解压缩后代码如下:

webdriver_service = service.Service('./operadriver')

webdriver_service.start()

driver = webdriver.Remote(webdriver_service.service_url,

webdriver.DesiredCapabilities.OPERA)

driver.get('https://www.baidu.com')

Safari 10已经开始内置自动化测试的支持,Safari偏好设置->高级->在菜单栏中显示“开发”菜单,然后开发->允许远程自动化,最后下载Selenium Server的jar包,测试脚本如下:

# -*- coding: utf-8 -*-

from selenium import webdriver

import time

import os

os.environ["SELENIUM_SERVER_JAR"] = "selenium-server-standalone-2.53.1.jar"

# 设置quiet模式,否则会打印很多log

driver = webdriver.Safari(quiet=True)

driver.get('https://www.baidu.com')

assert u'百度一下,你就知道' in driver.title

print u"当前URL:", driver.current_url

time.sleep(4)

driver.quit()

使用driver.save_screenshot(filename)可以保存浏览器的运行截图(默认是覆盖写入)。

使用ff.execute_script("window.scrollTo(0, document.body.scrollHeight);")可以滚动到屏幕上面。

如果认为我的文章对您有帮助,欢迎关注我(CSDN:Mars Loo的博客)或者为这篇文章点赞,谢谢!

发布了87 篇原创文章 · 获赞 187 · 访问量 50万+

他的留言板关注

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-143957-2.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值