一.对话框:

例:点击百度的登录,弹出的小窗口

#coding=utf-8

from selenium import webdriver
from time import sleep
dr=webdriver.Chrome()
dr.get("http://www.baidu.com")

#一定要记得设置等待时间,要不然定位不到!!!
dr.find_element_by_link_text("登录").click()
sleep(3)

#思路:二次定位,点击登录后,定位登录的弹出框,用id或class_name都可以!!然后定位登录框的姓名输入框
#login=dr.find_element_by_id("TANGRAM__PSP_8__userName") 直接定位,定位不到!!!!!

#login=dr.find_element_by_class_name("tang-content").find_element_by_name("userName")
login=dr.find_element_by_id("TANGRAM__PSP_8__form").find_element_by_id("TANGRAM__PSP_8__userName")
login.send_keys("17710192039")
dr.find_element_by_name("password").send_keys("a7s5dfg!")
dr.find_element_by_id("TANGRAM__PSP_8__submit").submit()

二.多窗口,从一个页面跳转到另外一个页面

思路:先定位百度登录的句柄,然后跳转到注册页面,点击转到非登录页面的句柄!!!!!

#coding=utf-8

from selenium import webdriver
from time import sleep
dr=webdriver.Chrome()
dr.get("http://passport.baidu.com")

#一定要记得设置等待时间,要不然定位不到!!!

nowhandle=dr.current_window_handle
allhandles0=dr.window_handles
#当前登录页面只有一个句柄
print  "现在是登录页面"
print  nowhandle
for h in allhandles0:
    print h

#跳转到注册页面一共有两个句柄(包含登录页面的)
print  "现在进入注册页面"
dr.find_element_by_link_text("立即注册").click()
sleep(3)

allhandles=dr.window_handles
for handle in allhandles:
    print handle

for handle in allhandles:
    if handle!=nowhandle:
        dr.switch_to_window(handle)

sleep(3)
#关闭当前窗口
dr.close()

#转到登录首页
dr.switch_to_window(nowhandle)

三.弹出框处理 alert:使用switch_to_alert()   (accept,dismiss,send_keys)

#coding=utf-8

from selenium import webdriver
from  selenium.webdriver.common.action_chains import ActionChains
from time import sleep
dr=webdriver.Chrome()
dr.get("http://www.baidu.com")

#此处为百度页面的设置,涉及下拉框的处理!!!处理思路:一般是两次点击,一次点击弹出下拉框,另一次点击选项,如果是鼠标移动上弹出的用 move_to_element()

#先定位到“设置”
dr.find_element_by_link_text("设置").click()
sleep(3)

sou=dr.find_element_by_class_name("pf")
sou.click()
#ActionChains(dr).move_to_element(sou).perform()  这种的一般用于找父元素,下拉框.子元素,移动到子元素上
sleep(3)

#点击“确定”,用accept()
dr.switch_to_alert().accept()

#点击取消",用dismiss()
dr.switch_to_alert().dismiss()

#输入内容,直接用send_keys()
dr.switch_to_alert().send_keys()

#输出内容
print  dr.switch_to_alert().text

四.上传文件,直接定位点击按钮,并send_keys即可(路径必须正确)

upload.html

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>upload_file</title>
<link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
  <div class="row-fluid">
    <div class="span6 well">
    <h3>upload_file</h3>
      <input type="file" name="file" />
    </div>
  </div>
</body>
<script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></script>
</html>

  

 uoload.py

#coding=utf-8

from selenium import webdriver
from time import sleep
import os
dr=webdriver.Chrome()

#打开上传文件的页面
file_path='file:///'+os.path.abspath('upload.html')
dr.get(file_path)

sleep(3)

#点击”选择文件“按钮,
dr.find_element_by_name("file").send_keys('D:\\zhihu.cookie.txt')
sleep(3)

  效果如下:

  

python实例编写(3)--对话框,多窗口,下拉框,上传文件的更多相关文章

  1. select2的多选下拉框上传

    1.加入multiple: true,属性实现多选下拉框样式 2.下拉框选择后的值是数组类型不要经过数据处理才能进行表单提交 提交的时候原下拉框所在的标签不提交,而是将多选后的值存入页面中的一个隐藏标 ...

  2. Python+selenium之获取文本值和下拉框选择数据

    Python+selenium之获取文本值和下拉框选择数据 一.结合实例进行描述 1. 实例如下所示: #新增标签操作 def func_labels(self): self.driver.find_ ...

  3. python实例编写(7)---测试报告与测试套件(多个py文件,1个py文件内多个用例)

    一.  一个.py文件批量执行测试用例(一个.py文件下多个用例执行) 如果直接使用:unittest.main(),则按字母顺序执行, 对于前后之间又依赖关系的用例,需要按特定的顺序执行,则使用 s ...

  4. 《selenium2 python 自动化测试实战》(10)——下拉框和alert

    # coding: utf-8 from selenium import webdriverfrom selenium.webdriver.common.action_chains import Ac ...

  5. 【selenium】基于python语言,如何用select选择下拉框

    在项目测试中遇到了下拉框选择的控件,来总结下如何使用select选择下拉框: 下图是Select类的初始化描述,意思是,给定元素是得是select类型,不是就抛异常.接下来给了例子:要操作这个sele ...

  6. Python脚本控制的WebDriver 常用操作 <二十六> 上传文件

    测试用例场景 上传文件的方法是找到上传文件的对象,通常是的对象.然后直接往这个对象send_keys,传入需要上传文件的正确路径.绝对路径和相对路径都可以,但是上传的文件必须存在,否则会报错. Pyt ...

  7. C#在WinForm下使用HttpWebRequest上传文件

    转自:http://blog.csdn.net/shihuan10430049/article/details/3734398 这段时间因项目需要,要实现WinForm下的文件上传,个人觉得采用FTP ...

  8. windows、linux下通过ftp上传文件小脚本

    一.windows @echo off #open ip 将要上传文件的IP地址echo open IP>ftp.up #用户名echo ninic>>ftp.up #密码echo ...

  9. windows下使用 fdfs_client 上传文件

    在上一篇中介绍了使用 FastDFS 与 Nginx 在 Linux 系统上实现分布式图片服务器,现在介绍在 windows 系统下使用该分布式图片服务器. 需要安装 fdfs_client 模块和配 ...

  10. [转]C#在WinForm下使用HttpWebRequest上传文件并显示进度

    /// <summary> /// 将本地文件上传到指定的服务器(HttpWebRequest方法) /// </summary> /// <param name=&qu ...

随机推荐

  1. GC选择之串行收集与并行收集

    GC 串行收集器 (古老 稳定 会有较长时间停顿)-XX:+UseSerialGC 新生代.老年代串行回收,新生代复制算法.老年代标记-压缩算法 并行收集器 ParNew (多核时性能比较好) Ser ...

  2. LAMP环境的搭建(三)----PHP7的安装

    centos自带的PHP源是5.4版本的.如果需要安装PHP 5.4 直接输入 yum install php -y 即可 因为PHP7性能巨大的提升,因此本文选择安装PHP7 如果已经安装过了php ...

  3. HTML图像

    HTML 图像- 图像标签( <img>)和源属性(Src) 在 HTML 中,图像由<img> 标签定义. <img> 是空标签,意思是说,它只包含属性,并且没有 ...

  4. JSP慕课网阶段用户登录小例子(不用数据库)

    getAttribute和setAttribute一起使用,而getParameter用于取得如request传来的参数. Web是请求/响应架构的使用,而request和response就是在服务器 ...

  5. python使用mongodb

    系统环境:Windows 10 ,python3.x 1.安装mongodb mongodb下载官网:https://www.mongodb.com/download-center?jmp=nav#c ...

  6. Kettle6.0表输入连接数据库

    kettle6.0表输入我们需要从数据中获取数据的时候,需要和数据库建立连接,简单的说下步骤: 1.双击表输入: 2.点击"新建",输入参数值: 注意:数据库用户名可以通过sql进 ...

  7. MEF IOC使用

    IOC介绍 IOC:控制反转,DI:依赖注入.按我的理解应该是一个东西.作用目前我看到的主要是解除各个层之间的强耦合,实现接口分离.MEF优点: 1.net4 自带,无需安装扩展(引用System.C ...

  8. Microsoft .Net Remoting系列专题之二

    Microsoft .Net Remoting系列专题之二 一.远程对象的激活 在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成.工作过程事实上是 ...

  9. 自己动手写fullPage插件

    仿造fullPage.js https://alvarotrigo.com/fullPage/#firstPage 自己参照网上教程写了一个,加了注释.主要是练习造轮子的能力,需求是不断变化的只拿来用 ...

  10. poj 2762 强连通缩点+拓扑排序

    这题搞了好久,先是拓扑排序这里没想到,一开始自己傻乎乎的跑去找每层出度为1的点,然后才想到能用拓扑排序来弄. 拓扑排序的时候也弄了挺久的,拓扑排序用的也不多. 题意:给一个图求是否从对于任意两个点能从 ...