1.对话框,下拉框

(1)对话框的有两种,一种是iframe格式的,需要switch_to_iframe()进行定位,现在大部分的对话框是div格式的,这种格式的可以通过层级定位来定位元素,先定位对话框的div,然后再对对话框的元素进行定位。

(2)另外的弹出消息提示框有三种类型:alert,comfirm,prompt,三种类型的区别为;

alert消息提示框仅提供“确定”按钮,用于警告等提示,comfirm提示框提供“是”和“否”的选择,prompt则是提示输入对话框,包含提示信息,输入文本框以及“确定”和“取消”按钮

这几种消息提示框一般都是调用javascript来显示的,所以如何定位这些对话框里的元素?

使用switch_to_alert定位弹出框,对于弹出框的主要操作有;

text:获取文本值

accept() :点击"确认"

dismiss() :点击"取消"或者叉掉对话框

send_keys() :输入文本值 ,该操作对于有输入文本框的prompt有效

alert = driver.switch_to_alert()               #定位到弹出框
print(alert.text) #获取弹出框提示信息
alert.send_keys("my name is xiaoming") #对于prompt的弹出框,在文本框中输入内容
alert.accept() #点击确定,或者alert.dismiss(),点击取消

下拉框定位:

(1)下拉列表<select>标签的,可以使用Select(driver.find_element_by_xxx(select元素定位)).select_by_xxx(列表项定位)来定位

<select name="s1">
<option value="1" title="option1" >1</option>
<option value="2" title="option2" >2</option>
<option value="3" title="option3" >3</option>
<option value="4" title="option4" >4</option>
<option value="5" title="option5" >5</option>
<option value="6" title="option6" >6</option>
<option value="7" title="option7" >7</option>
<option value="8" title="option8" >8</option>
<option value="9" title="option9" >9</option>
<option value="10" title="option10" >10</option>
</select>

定位某一列的方式有以下方式,例如定位列表项1

select_by_value(),Select(driver.find_element_by_name("s1")).select_by_value("1")

select_by_index(),Select(driver.find_element_by_name("s1")).select_by_index(1)

select_by_visible_text() # 通过选项文字进行选择,Select(driver.find_element_by_name("s1")).select_by_visible_tex("1")

(2)下拉列表不是select标签,而是ul>li,则可以通过xpath或者css来定位列表项,先定位下拉菜单ul,再定位具体的列表项li。例如定位列表项的最后一项

<ul name="u1">
<li value="1" title="1" >1</lin>
<li value="2" title="2" >2</lin>
<li value="3" title="3" >3</lin>
<li value="4" title="4" >4</lin>
<li value="5" title="5" >5</lin>
</ul>

定位最后一项的xpath定位方式:/ul/li[last()] 选取属于ul 子元素li的最后一个 book 元素。

driver.find_element_by_xpath("/ul/li[last()]")

3.上传

上传文件:定位上传文件的文本框类似输入文本框内容将文件的绝对路径输入send_keys("文件路径")

send_keys("文件路径")

selenium + python自动化测试unittest框架学习(三)webdriver对页面其他控件操作(三)的更多相关文章

  1. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

  2. selenium + python自动化测试unittest框架学习(五)webdriver的二次封装

    因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...

  3. selenium + python自动化测试unittest框架学习(一)selenium原理及应用

    unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻. ...

  4. selenium + python自动化测试unittest框架学习(三)webdriver元素定位(一)

    1.Webdriver原理 webdirver是一款web自动化操作工具,为浏览器提供统一的webdriver接口,由client也就是我们的测试脚本提交请求,remote server浏览器进行响应 ...

  5. selenium + python自动化测试unittest框架学习(三)webdriver元素操作(二)

    上一篇是元素的定位,那么定位元素的目的就是对元素进行操作,例如写入文本,点击按钮,拖动等等的操作 (1)简单元素操作 简单元素操作 find_element_by_id("kw") ...

  6. selenium + python自动化测试unittest框架学习(七)随机生成姓名

    在自动化测试过程中经常要测试到添加用户的操作,每次都要输入中文,原本是找了十几个中文写成了列表,然后从列表中随机取出填入用户名文本框中,随着测试的增加,发现同名的人搜索出来一大堆,最后在网上找了个随机 ...

  7. selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点

    在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个mo ...

  8. selenium + python自动化测试unittest框架学习(六)分页

    接触的项目分页的形式是以下形式: 想要获取总页数后,遍历执行翻页的功能,但由于分页是以javascript方法实现的,每次点击确定按钮后,页面就回刷新,webelement元素过期无法遍历下一个进行翻 ...

  9. selenium + python 自动化测试环境搭建

    selenium + python 自动化测试 —— 环境搭建 关于 selenium Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操 ...

随机推荐

  1. dubbo客户端源码分析(一)

    rpc框架有很多,公司自研.开源的thrift.dubbo.grpc等.我用过几个框架,了解了一下实现原理,客户端基本都是用代理实现,jdk动态代理.cglib等.最近一段时间想了解一下dubbo源码 ...

  2. MVC 中使用kindEditor 图片上传在IE 上进行上传出现的问题

    在IE 上使用KindEditor 进行单张图片上传的时候会出现一个下载安全警告,这样将会造成图片上传失败,出现的错误页面:

  3. python中logging日志基本用法,和进程安全问题

    低配版 import logging logging.debug('debug message') # 调试模式 logging.info('info message') # 正常运转模式 loggi ...

  4. Window ssh免密登录到远程Linux服务器

    SSH采用的是”非对称密钥系统”,即耳熟能详的公钥私钥加密系统. 1. 基于口令的安全验证 这种方式使用用户名密码进行联机登录,一般情况下我们使用的都是这种方式.整个过程大致如下: (1)客户端发起连 ...

  5. C#基础-for循环执行顺序

    for(表达式1;表达式2;表达式3) {循环体} 执行顺序:1-表达式1赋值 2-判断表达式2是否为真 3-表达式2如果为否跳出for循环,如果为真执行循环体 4-执行表达式3 5-判断表达式2继续 ...

  6. ssm 注解@ResponseBody 返回json 乱码问题

    方法一:在@RequestMapping上加入 produces方法 @RequestMapping(value = "/upload.do",method = RequestMe ...

  7. Manachar算法详解

    求解最长回文串之Manachar算法 问题类型: 输入一个字符串,求出其中最大的回文子串.子串的含义是:在原串中连续出现的字符串片段. 回文的含义是:正着看和倒着看相同,如abba和yyxyy. 这类 ...

  8. QT开发(一)Vs2013集成 QT5.3.1

    原文:http://www.cnblogs.com/aoldman/p/3860837.html 很久不写随笔了,真是越来越懒.最近公司要做一款产品,想使用QT不用WPF lol,让苦逼的.net的我 ...

  9. 算法day02

    算法动态演示网站 数组是有长度限制的,有类型限制 CPU计算 每次是2的32位的,32根线,支持最大是4G 数组:线性表 列表:动态表链表:存储的位置不是连续的 insert 时间复杂度是 Onapp ...

  10. SQL一次性查询一个字段不同条件下的统计结果

    参考了一下这篇文章:https://blog.csdn.net/xichenguan/article/details/51764100 , 感谢原作者 有两个表,分别存放了[操作员]和[单据],要根据 ...