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

一.对话框:

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

#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)

  效果如下:

  

时间: 2024-08-04 12:05:44

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

select2的多选下拉框上传

1.加入multiple: true,属性实现多选下拉框样式 2.下拉框选择后的值是数组类型不要经过数据处理才能进行表单提交 提交的时候原下拉框所在的标签不提交,而是将多选后的值存入页面中的一个隐藏标签中,将这个隐藏标签进行提交 提交时获取选中的下拉框的所有的值,并遍历这些值,将这些值分别以(值 逗号)的形式存入一个变量中,并在遍历完成后去掉最后一个逗号, 最终的格式类似  1,4,6,7 这样 页面初始化时,假如值传入,就将数据处理成数组并通过&(“#aa”).val(arr).trigger

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

一.  一个.py文件批量执行测试用例(一个.py文件下多个用例执行) 如果直接使用:unittest.main(),则按字母顺序执行, 对于前后之间又依赖关系的用例,需要按特定的顺序执行,则使用 suite.addTest(类名("方法名")),如这里按照新增,修改,删除的顺序,可以避免执行完毕后的测试数据处理. def test_modifyCategory(self): ... def test_addCategory(self): ... def test_delCategor

Python下使用ftplib上传文件到ftp上

生产情况:tomcat下业务log备份,目录分多级,然后对应目录格式放到ftp上:所以,结构上 我就是一级一级目录进行判断(因为我没有找到在ftp一次判断其子目录是否存在),还有一个low点就是我没有找到怎样一次性的调用ftp的login因为现在每次判断都需要登录一下,最终功能是实现了:想着先贴出来 #!/usr/local/bin/python3.5 ###Description: 上传业务log到FTP199 ###Author: Tonny.Deng ###DateTime: 2016-1

windows下使用 fdfs_client 上传文件

在上一篇中介绍了使用 FastDFS 与 Nginx 在 Linux 系统上实现分布式图片服务器,现在介绍在 windows 系统下使用该分布式图片服务器. 需要安装 fdfs_client 模块和配置 client.conf 配置文件. 下载 fdfs_client 模块和 client.conf 配置文件:点我下载 windows 下使用 fdfs_client 实现文件上传 1.安装 fdfs_client 模块 在 windows 环境下使用 pip install fdfs_clien

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

/// <summary> /// 将本地文件上传到指定的服务器(HttpWebRequest方法) /// </summary> /// <param name="address">文件上传到的服务器</param> /// <param name="fileNamePath">要上传的本地文件(全路径)</param> /// <param name="saveName&qu

linux下实现ftp上传文件

上传: #!/bin/sh set -x set -e local_rootPath=/hadoop/datadir/windeploy/temp host="192.168.12.2" # 需要上传的ftp地址 port="21" # 端口 user="ftpuser" # ftp登陆的用户名 passwd="123456" # ftp 登陆用户口令 customer="aaa" ftp -n<&l

shell 模式下tftp下载上传文件的命令

tftp下载文件: tftp -pl test.app 6.6.6.6 test.app是要下载的文件: 6.6.6.6是下载所通过的网卡: tftp上传文件: tftp -gr test.app 6.6.6.6 test.app是要上传到设备的文件: 6.6.6.6是上传通过的网卡:

ligerui多选动态下拉框

今天下午要求做一个支持多选的,并且插件用ligerui的,当时有点小懵了,因为没用过ligerui啊!而且按照API的介绍,我做得也很好啊,可是为什么就是显示不出来?据说有位小神比较厉害,请教来之,两个点过去了,依然无果................... 好吧,切入正题,首先要做一个ligerui的下拉框,必须在页面加载的时候就初始化一个下拉框来,要不你叫你妈来都不好使!(好吧,是我不会看API!) 先说说我现在的需求,我需要做一个类似于二级联动,有两个下拉框,一个是房屋类型,一个是房屋格局

带输入查询功能匹配下拉框的几种实现方式

在Web开发中我们经常需要用户进行输入操作,输入框内我们输入几个字,输入框就会出现下拉提示你可能要输入的完整信息.下面我总结了几种常见的方案: 一:EasyUi combobox 组合框 具体使用方法官方文档上有详细介绍:http://www.jeasyui.net/plugins/169.html. 当然,你若觉得样式不怎么好看,引入easyui的 js 和css,可以进行简单的样式调整如下: .textbox { webkit-border-radius: 0px; border-radiu