小米手机玩不了三国大时代4霸王立志吗

selenium+webdriver+python定位不到元素的原因及解决办法
selenium+webdriver+python定位不到元素的原因及解决办法
在定位元素过程中,总会遇到这样那样的问题,下面就最近遇到的4大类问题,得到的解决方法,来做个总结。
xpath描述错误的
这个是因为在描述路径的时候没有按照xpath的规则来写 造成找不到元素的情况出现
2.动态id定位不到元素
在工作过程中,有时候会遇到类似这样的动态id
//*[@id=”listbg00.47465”]/td[3]/img
相应的直接copy xpath 的方法得到:
//*[@id=”listbg00.41284”]/td[3]/img
对于此类方法,不能通过id 以及简单的copy path去准确定位元素,因为他们是动态变化的。
解决方法:
采用xpath定位方法中,属性+层次相结合的方法可以得到,比如:
find_element_by_xpath(“//td[class=’tessdoperate’]/img”)
3. 点击速度过快 页面没有加载出来,就需要点击页面上的元素
对于这种情况,,解决此方法:
只需要加合理的时间等待。
诸如:time.sleep(3)
4. 不在同一个frame里边查找元素
我们会遇到使用id/xpath/name都不能准确定位元素,主要是因为使用到了frame框架。
那么如何去定位元素,如何去找元素?
通过selenium IDE去模拟,然后再找到该元素所在的frame。
写一个小脚本去判断元素是否被准确定位到。其脚本如下:
driver.switch_to_frame(driver.find_element_by_name("menu")) #针对Frame=menu的情况
time.sleep(2)
driver.find_element_by_xpath("//*[@id='mi']/a/span").click()
driver.find_element_by_xpath("//*[@id='mc']/a/span").click()
time.sleep(4)
driver.switch_to_frame(driver.find_element_by_name("config")) #再针对Frame=config的情况
driver.find_element_by_xpath("//*[@class='value']/img").click()
time.sleep(3)
print("it's ok")
print ("没有找到元素")
print ("元素存在")
driver.quit()
这样一步一步去debug浏览器中的元素是否被准确定位到。
以上是最近项目过程中,遇到的一些问题,折腾后,得到的解决方法,可行。于是在此,做个总结。同时,也谢谢网友们的分享。
遇到问题后,一个一个去解决,这便是成长。在IT行业,所使用的测试工具以及知识更新太快,只有不断的保持学习的能力和拥有积极的态度,才能保持核心竞争力。
我的热门文章
即使是一小步也想与你分享1、什么是Selenium,为什么web测试,大家都用它?
  Selenium设计初衷就是为web项目的验收测试再开发。内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的浏览器,支持windows\linux\macos等各种平台。
  Selenium 脚本是用多种受支持的编程语言中的一种编写的 && 目前可用的有 Java、Ruby 和 Python 驱动程序。这些脚本在浏览器之外的一个单独的进程中运行。驱动程序的任务是执行测试脚本,并通过与运行在浏览器中的 browser bot 进行通信来驱动浏览器。驱动程序与 browser bot 之间的通信使用一种简单的特定于 Selenium 的连接语言 Selenese。
  Selenium 是软件工程师、设计人员和测试人员的工具箱中又一个有用且重要的工具。通过将该工具与持续集成工具相结合,团队就可以将验收测试自动化,并构建更好的软件,因为他们可以更容易、更早、更频繁地发现 bug。Selenium 的另一个优点是可以节省时间,使开发人员和测试人员不必将时间花在本可以(也应该)自动化的手工任务上,从而让团队将精力放在更有价值的活动上。
2、几种常见的Selenium查找(定位)WEB元素的方法。
  Python:
  1)查找元素的ID。
    from selenium import webdriver
    browser = webdriver.Firefox()
    browser.find_element_by_id("Element's id")
  2)通过元素的name来定位。
    browser.find_element_by_name("Element's name")
  3)通过所应用的样式表名className。
    browser.find_element_by_class_name("class name")
  4)通过CSS应用特征。
    find_element_by_css_selector("a[id='id']")
  5)通过链接的文本。
    browser.find_element_link_name("link name")
  6)通过XPATH定位。
    browser.find_element_by_xpath("//***[*='**']")
下面转载一篇写得比较好的兄弟的博文:
selenium对web各元素的操作首先就要先定位元素,定位元素的方法主要有以下几种:
通过id定位元素:find_element_by_id("id_vaule")
通过name定位元素:find_element_by_name("name_vaule")
通过tag_name定位元素:find_element_by_tag_name("tag_name_vaule")
通过class_name定位元素:find_element_by_class_name("class_name")
通过css定位元素:find_element_by_css_selector();用css定位是比较灵活的
通过xpath定位元素:find_element_by_xpath("xpath")
通过link:find_element_by_link_text("text_vaule")或者find_element_by_partial_link_text()
以百度首页为例:下面是百度输入框的html代码,可以通过firebug或者谷歌的审查元素或得
&input type="text"name="wd" id="kw1" maxlength="100"style="width:474"
autocomplete="off"&
1.通过id定位,则百度的输入框即可表示为:find_element_by_id("kw1")
2.通过name定位则可以表示为:find_element_by_name("wd")
3.通过tag_name定位:input其实就是tag_name(标签名),同样也可以表示成:
find_element_by_tag_name("input")
下面是&百度一下&按钮的html
&span&class="btn_wr"&
&inputtype="submit" value="百度一下" id="su1" class="btn" onmousedown=
"this.className='btnbtn_h'" onmouseout="this.className='btn'"&
4.通过class_name定位,&百度一下&按钮则可以表示成find_element_by_class_name("btn_wr")
5.通过css定位,这个比较灵活,想要完全弄懂,花费的时间是
比较多的,个人觉得没有必要
百度输入框
type="text" name="wd"id="kw1" maxlength="100"style="width:474"autocomplete="off"&
如取id,百度输入框则可以表示为:find_element_by_css_selector("a[id=\"kw1\"]")
如取name,又可以表示为:find_element_by_css_selector("a[name=\"wd\"]")
&aonclick="queryTab(this);"mon="col=502&pn=0"title="web"href="/"&网页&/a&
还可以用title,如百度的网页链接可以表示为find_element_by_css_selector("a[title=\"web\"]")
&aclass="RecycleBinxz"href="javascript:void(0);"&
还也同样可以用class,上面的代码有可以用find_element_by_css_selector("a.RecycleBin")
6.通过XPath定位
首先我们要了解XPath是上面东西,XPath是一种在XML
文档中定位元素的语言。因为HTML可以看做XML的一种实现,
所以selenium用户可是使用这种强大语言在web应用中定
位元素,详情请阅读:
什么是XPath:XPath基础教程:
selenium中被误解的XPath:
xpath:attributer(属性)
driver.find_element_by_xpath("//input[@id='kw1']")
表示input标签下id =kw1的元素
xpath:idRelative(id相关性)
driver.find_element_by_xpath("//div[@id='fm']/form/span/input")
表示在/form/span/input层级标签下有个div标签的id=fm的元素
driver.find_element_by_xpath("//tr[@id='check']/td[2]")
表示id为'check'的tr,定闪他里面的第2个td
xpath:position(位置)
driver.find_element_by_xpath("//input")
driver.find_element_by_xpath("//tr[7]/td[2]")
表示第7个tr里面的第2个td
xpath: href(水平参考)
driver.find_element_by_xpath("//a[contains(text(),'网页')]")
表示在a标签下有个文本(text)包含(contains)'网页' 的元素
xpath:link
driver.find_element_by_xpath("//a[@href='/']")
表示有个叫a的标签,他有个链接href='/的元素
7.通过link定位
有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link
#coding=utf-8
fromseleniumimportwebdriver
importtime
df = webdriver.Firefox()&#选择firefox浏览器
df.get("")&#打开百度网页
time.sleep(2)&#暂停2秒,不是毫秒
df.find_element_by_link_text("贴 吧").click()&#点击贴吧链接
time.sleep(2)
df.quit()&#关闭浏览器
PartialLinkText
通过部分链接定位,这个有时候也会用到,我还没有想到很好的用处。拿上面的例子,我可以只用链接的一部分文字进行匹配:
browser.find_element_by_partial_link_text("贴").click()
通过find_element_by_partial_link_text(),我只用了&贴&字,脚本一样找到了"贴吧"的链接
阅读(...) 评论()Selenium自动化测试Python二:WebDriver基础 - 简书
Selenium自动化测试Python二:WebDriver基础
WebDriver基础
欢迎阅读WebDriver基础讲义。本篇讲义将会重点介绍Selenium WebDriver的环境搭建和基本使用方法。
WebDriver环境搭建
Selenium WebDriver 又称为 Selenium2。
Selenium 1 + WebDriver = Selenium 2
WebDriver是主流Web应用自动化测试框架,具有清晰面向对象 API,能以最佳的方式与浏览器进行交互。
支持的浏览器:
Mozilla Firefox
Google Chrome
Microsoft Internet Explorer
Apple iPhone
Android browsers
环境搭建步骤
在上一篇中,我们已经确认使用Python来进行WebDriver的编码和操作。事实上Python+Selenium WebDriver环境的搭建分为两个部分:
安装python
安装Selenium
标准的安装步骤
选择Python的版本。
Python主流的有两个大的版本,2.7和3.5(请注意,从Python的3.5版本开始,不再支持Windows XP操作系统,Windows XP用户请安装3.4版本)。我们的例子将会选用面向未来的3.5版本。
安装Python。
在Python的官网下载最新的安装包,进行界面安装。
安装的时候,推荐选择“Add exe to path”,将会自动添加Python的程序到环境变量中。然后可以在命令行输入python -V检测安装的Python版本。
当前的版本安装中将会默认已经安装了setuptools和pip这两个Python的基本工具。如果使用了比较旧的Python版本的话,需要自行安装这两个工具。
setuptools:Python的基础工具包,用来构建、安装卸载Python程序
pip:Python软件包的安装和管理工具。通过pip可以简单的安装Python的任意类库
安装Selenium2.0版本。
在Windows安装Selenium2.0,有两种途径。使用pip命令行或者源码安装。以下两种方法,使用任何一个均可。推荐pip的方式。
方法一:pip命令行安装,运行 | cmd,打开命令行,-U其实就是--upgrade,升级安装。
pip install -U selenium
方法二:源码解压安装,前往
python setup.py install
Ubuntu下的环境搭建
在Ubuntu下的Python的解释器一般情况下已经存在了。我们需要打开终端,输入python -V命令进行验证。如果没有安装Python,那么需要去Python官网上下载指定版本的源文件,进行源码安装。安装完了以后并进行环境变量的设置。
安装Selenium WebDriver的方法与上述在Windows环境下安装部署的方法一致。依旧推荐使用pip命令行进行安装。
使用IDE编写Python
在上述环境搭建好以后,我们便可使用Python来编写自动化脚本程序,执行Selenium自动化测试。在此之前,我们依旧需要解决一个问题,那就是IDE的选择。
IDE,Integrated Development Environment,集成开发环境。一个好的编辑器或者好的IDE将会极大的提高生产力,帮我们做很多事情,使得编码工作更加简单,编码的体验更加容易。一般情况下,我们有以下几种工具可以选择:
IDLE:Python自带的IDE,功能简单,使用方便
Notepad++:一个强大的开源编辑器
Vim:Linux系统中最好用的编辑器之一
Sublime Text:一个非常轻便好用的现代化的编辑器,推荐。
PyCharm:JetBrains公司提供的现代化的跨平台的Python IDE。
使用Sublime Text 3搭建Python环境
**通过快捷键Ctrl + 或者View & Show Console打开控制台,输入以下代码并回车
import urllib.request, pf = 'Package Control.sublime-package';
ipp = sublime.installed_packages_path();
urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) );
open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())
安装完以后,重启Sublime Text 3
如果在Perferences-&package settings中看到package control这一项,则安装成功
按下Ctrl+Shift+P调出命令面板
输入install package选项并回车
输入i,匹配到以后,按回车,安装。Anaconda是一个终极的Python插件。安装完了以后便可用Sublime Text 3编写Python代码,并且使用Ctrl + B来编译执行。
一般来说,一个好的IDE提供一下功能,使你的编码开发工作变得更有效率:
一个图形化的智能代码提示和补全功能
可以轻松查看方法和类
提供单元测试和调试的工具
源代码版本管理工具的支持
我们可以尝试用上述的编辑器或者IDE来进行Python代码编写工作。
开始使用WebDriver
接下来我们尝试几个简单的例子来体会一下Selenium WebDriver的使用。
## 引入WebDriver的包
from selenium import webdriver
## 创建浏览器对象
browser = webdriver.Firefox()
## 打开百度网站
browser.get('/')
## 引入WebDriver包
from selenium import webdriver
## 引入WebDriver Keys包
from mon.keys import Keys
## 创建浏览器对象
browser = webdriver.Firefox()
## 导航到百度主页
browser.get('')
## 检查标题是否为‘百度一下,你就知道’
assert '百度一下,你就知道' in browser.title
## 找到名字为wd的元素,赋值给elem
elem = browser.find_element_by_name('wd')
# 找到搜索框
elem.send_keys('seleniumhq' + Keys.RETURN)
# 搜索seleniumhq
## 关闭浏览器
browser.quit()
Selenium 3.0.1 出现的问题以及解决
3.0.1 更新以后,需要做两个操作:
Geckodriver executable needs to be in PATH。Geckodirver的下载地址:报错内容:WebDriverException:Message:'geckodriver'executable needs to be in Path
geckodriver是一原生态的第三方浏览器,对于selenium3.x版本都会使用geckodriver来驱动firefox,所以需要下载geckodriver.exe。放置在Path 环境变量可以访问到的地方。例如 C:\python34
需要将火狐的安装路径放到path,然后重启(必须重启电脑)报错内容:mon.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
参考地址:
XAMPP的安装部署和环境搭建
XAMPP的安装,在Windows操作系统中比较简单,可以直接运行安装文件,默认全部下一步,即可完成软件的安装。
请注意:Windows XP系统只能可以 XAMPP 1.8.2版本;Windows 7以及以上的系统可以安装最新版的XAMPP。XAMPP不分32位和64位操作系统。
XAMPP的部署
XAMPP = OS + Apache + MySQL + PHP + Perl
我们一般部署的网站,符合XAMPP环境的话,只需要启动Apache和MySQL两个应用。
启动Apache
解压网站源文件,例如解压然之:ranzhi.2.5.zip,请把压缩包里面的ranzhi这个文件夹解压出来;禅道也类似,需要把压缩包中的zentaopms文件夹解压出来
部署源文件,请将解压以后的源文件放到xampp\htdocs文件夹中
通过浏览器访问部署好的网站源文件,进行向导安装。http://localhost/ranzhi/www
PS:这里我们主要支持的是PHP+MySQL开发的网站部署。
XAMPP的问题解决
无法启动Apache:请认真查看日志,判断80和443端口被什么样的程序占用,需要关闭对应程序,或者修改Apache的端口。
IIS:控制面板 | 管理工具 | Internet信息服务 | 默认网站 | 关闭
VisualSVN Server: 控制面板 | 管理工具 | VisualSVN Server | 关闭
VMware Workstation: 开始 | VMware Workstation | 编辑 | 首选项 | 共享虚拟机 | 禁用共享
HP LoadRunner: 右侧任务栏 | 右键 | 关闭
修改XAMPP Apache 端口:Config | httpd.conf修改Linsten 80 | Httpd-ssl.conf修改 Listen 443
无法启动MySQL:请认真查看错误日志,找到已经启动的MySQL的程序进程,杀掉该进程。
使用unittest编写测试脚本
通过上面的例子,我们可以简单的写出Selenium WebDriver的脚本,但是对于测试工作来说,上述的脚本还远远不够。因为上述的脚本没有“检查”。
接下来我们将会使用Python语言的unittest框架展开“检查”。
unittest基础
unittest框架的原本的名字是PyUnit。是从JUnit这样一个被广泛使用的Java应用开发的单元测试框架创造而来。类似的框架还有NUnit(.Net开发的单元测试框架)等。
我们可以使用unittest框架为任意Python项目编写可理解的单元测试集合。现在这个unittest已经作为Python的标准库模块发布。我们安装完Python以后,便可以直接使用unittest。
unittest框架提供了编写test cases,test suites和test fixtures的基本功能。我们首先关注 Test cases的编写与执行。
使用unittest需要以下简单的三步:
引入unittest模组
继承unittest.TestCase基类
测试方法以test开头
unittest示例
## 引入unittest模组
import unittest
## 定义测试类,名字为DemoTests
## 该类必须继承unittest.TestCase基类
class DemoTests(unittest.TestCase):
## 使用'@'修饰符,注明该方法是类的方法
## setUpClass方法是在执行测试之前需要先调用的方法
## 是开始测试前的初始化工作
@classmethod
def setUpClass(cls):
## 测试一(务必以test开头)
def test_01(self):
## 测试三(务必以test开头)
def test_02(self):
## 测试三(务必以test开头)
def test_03(self):
## tearDownClass方法是执行完所有测试后调用的方法
## 是测试结束后的清除工作
@classmethod
def tearDownClass(cls):
# 执行测试主函数
if __name__ == '__main__':
## 执行main全局方法,将会执行上述所有以test开头的测试方法
unittest.main(verbosity=2)
Python知识的补充:
Python文件的后缀名是.py
.py文件可以用来直接执行。也可以被用来作为模块导入。在cmd命令行中执行的命令为python demo.py
在Python中导入模块(模组)一般使用的是import
使用unittest框架编写Selenium WebDriver测试
接下来我们查看一个完整的Selenium WebDriver自动化测试实例
import unittest
from selenium import webdriver
from mon.keys import Keys
class SearchTests(unittest.TestCase):
def setUp(self):
# 创建一个新的浏览器对象
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.driver.maximize_window()
# 导航到京东主页
self.driver.get("/")
def test_search_by_category(self):
# 获取到搜索框
self.search_field = self.driver.find_element_by_id("key")
self.search_field.clear()
# 输入iphone 6s plus并按下回车进行搜索
self.search_field.send_keys("iphone 6s plus"
+ Keys.RETURN)
# 获取所有的查询结果
products = self.driver.find_elements_by_css_selector("li[class='gl-item']")
# 断言:检查查询出来的个数是否为24个
self.assertEqual(24, len(products))
def tearDown(self):
# 关闭浏览器对象
self.driver.quit()
if __name__ == '__main__':
unittest.main(verbosity=2)
理解unittest框架提供的各种断言方法
方法 Method
assertEqual(a, b [, msg])
a == b,msg可选,用来解释失败的原因
assertNotEqual(a, b [, msg]
a != b,msg可选,用来解释失败的原因
assertTrue(x [, msg])
x 是真,msg可选,用来解释失败的原因
assertFalse(x [, msg])
x 是假,msg可选,用来解释失败的原因
assertIsNot(a, b [, msg])
a 不是 b,msg可选,用来解释失败的原因
WebDriver API 基本操作
这里我们将会开始WebDriver API的基本操作,从元素定位以及浏览器的基本操作开始。
元素的定位和操作是自动化测试的核心部分,其操作是建立在定位的基础上的。因此我们首选要开始定位元素。
在html里面,元素具有各种各样的属性。我们可以通过这样唯一区别其他元素的属性来定位到这个元素。WebDriver提供了一系列的元素定位方法。常见的有以下几种:
class name
partial link text
css selector
查找简单元素
我们从简单的一个元素开始定位。最基本的方法是id和name。大多数元素有这两个属性,在对控件的id和name命名是一般也会使其有意义,而取不同的名字。
例如我们看下面这段html
&input id="search" type="text" name="q" value="" class="input-text" maxlength="128" /&
我们可以使用对应的方法来定位这个input
find_element_by_id('search')
find_element_by_name('q')
find_element_by_class_name('input-text')
这里我们开始用最简单的方式来尝试定位
查看下面一个例子
self.driver.get('http://pro.demo.zentao.net')
# 用name定位用户文本输入框
self.account_field = self.driver.find_element_by_name('account')
# 用name定位密码文本输入框
self.password_field = self.driver.find_element_by_name('password')
self.account_field.clear()
self.password_field.clear()
self.driver.implicitly_wait(30)
# 输入用户名demo
self.account_field.send_keys('demo')
# 输入密码123456
self.password_field.send_keys('123456')
self.driver.find_element_by_id('submit').click()
self.driver.implicitly_wait(30)
companyname = self.driver.find_element_by_id('companyname')
self.assertEqual('demo项目管理系统', companyname.text)
self.driver.find_element_by_id('menuproduct').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_id('menuproject').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_id('menuqa').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_id('menudoc').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_id('menureport').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_id('menucompany').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_link_text('退出').click()
self.driver.implicitly_wait(30)
此外XPath定位和CSS Selector定位,和定位一组元素这样的内容案例,将在后续的讲义继续探讨和讲解。
控制浏览器
浏览器的控制也是自动化测试的一个基本组成部分,我们可以将浏览器最大化,设置浏览器的高度和宽度以及对浏览器进行导航操作等。
## 浏览器最大化
driver.maximize_window()
## 设置浏览器的高度为800像素,宽度为480像素
driver.set_window_size(480, 800)
## 浏览器后退
driver.back()
## 浏览器前进
driver.forward()
这里我们做一个综合性的练习实例
# coding=utf-8
import unittest
from selenium import webdriver
from mon.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
# import sys
# reload(sys)
# sys.setdefaultencoding('utf8')
class WebDriverTests(unittest.TestCase):
@classmethod
def setUpClass(cls):
# create a new Firefox session
cls.driver = webdriver.Firefox()
cls.driver.get('about:blank')
cls.driver.implicitly_wait(30)
print(" -- set up finished -- ")
def test_01_navigate(self):
url_baidu = '/'
url_zentao = 'http://pro.demo.zentao.net/user-login-Lw==.html'
# 导航到百度
self.driver.get(url_baidu)
self.driver.maximize_window()
self.driver.implicitly_wait(30)
# 导航到禅道
self.driver.get(url_zentao)
self.driver.maximize_window()
self.driver.implicitly_wait(30)
self.driver.back()
self.assertEqual(url_baidu, self.driver.current_url)
self.driver.implicitly_wait(30)
self.driver.forward()
self.assertEqual(url_zentao, self.driver.current_url)
self.driver.implicitly_wait(30)
print("-- test 01 finished -- ")
def test_02_element_interaction(self):
self.driver.get('http://pro.demo.zentao.net')
## 找到用户名和密码的输入框
self.account_field = self.driver.find_element_by_name('account')
self.password_field = self.driver.find_element_by_name('password')
## 清除当前的输入
self.account_field.clear()
self.password_field.clear()
self.driver.implicitly_wait(30)
## 输入用户名和密码,进行登录
self.account_field.send_keys('demo')
self.password_field.send_keys('123456')
self.driver.find_element_by_id('submit').click()
self.driver.implicitly_wait(30)
companyname = self.driver.find_element_by_id('companyname')
self.assertEqual('demo项目管理系统', companyname.text)
print(companyname.get_attribute('type'))
self.driver.implicitly_wait(30)
print('-- test 02 finished -- ')
def test_03_element_interation2(self):
## 这里执行了一段JavaScript代码
js = 'selectTheme("green")'
self.driver.execute_script(js)
self.driver.implicitly_wait(30)
js = 'selectTheme("red")'
self.driver.execute_script(js)
self.driver.implicitly_wait(30)
js = 'selectTheme("lightblue")'
self.driver.execute_script(js)
self.driver.implicitly_wait(30)
js = 'selectTheme("blackberry")'
self.driver.execute_script(js)
self.driver.implicitly_wait(30)
self.driver.find_element_by_id('menuproduct').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_id('menuproject').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_id('menuqa').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_id('menudoc').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_id('menureport').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_id('menucompany').click()
self.driver.implicitly_wait(30)
self.driver.find_element_by_link_text('退出').click()
self.driver.implicitly_wait(30)
WebDriverWait(self.driver, 10).until(
expected_conditions.element_to_be_clickable((By.ID, "submit")))
self.driver.implicitly_wait(30)
print('-- test 03 finished -- ')
def test_04_cookies(self):
self.driver.add_cookie(
{'name': 'key-neeeeew', 'value': 'value-neeeewwwww'})
# 遍历cookies 中的name 和value 信息打印,当然还有上面添加的信息
for cookie in self.driver.get_cookies():
print("%s -& %s" % (cookie['name'], cookie['value']))
self.driver.delete_all_cookies()
cookies = self.driver.get_cookies()
print(cookies)
print('-- test 04 finished -- ')
@classmethod
def tearDownClass(cls):
# close the browser window
cls.driver.quit()
print('-- tear down finished -- ')
if __name__ == '__main__':
unittest.main(verbosity=2)
态度决定一切

我要回帖

更多关于 三国大时代4修改器 的文章

 

随机推荐