1.多窗口操作

有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。

句柄(handle):识别浏览器窗口的属性

获取当前窗口的句柄:driver.current_window_handle

获取当前所以的句柄:driver.current_window_handles

切换窗口:switch_to.window(all_h[1])(其中all_h[1]为需要访问窗口的句柄)

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://bj.ganji.com/")
h = driver.current_window_handle
driver.maximize_window()
print (h) # 打印首页句柄
driver.find_element_by_link_text("工作").click()
all_h = driver.window_handles
print (all_h) # 打印所有的句柄
#获取list里面第二个直接切换
driver.switch_to.window(all_h[1])
print (driver.title)
# 关闭新窗口
#driver.close()
# 切换到首页句柄
driver.switch_to.window(h)
# 打印当前的title
print (driver.title)

2.下拉框操作

1. 基本思路:先定位select框,再定位select里的选项

定位select中的选项可以通过以下几种方式:

select_by_index()  :通过索引定位
       select_by_value()  :通过value值定位
       select_by_visible_text() :通过文本值定位
       deselect_all()          :取消所有选项
       deselect_by_index()     :取消对应index选项
      deselect_by_value()      :取消对应value选项
      deselect_by_visible_text() :取消对应文本选项
      first_selected_option()  :返回第一个选项
      all_selected_options()   :返回所有的选项

eg:s = driver.find_element_by_id(" ")

Select(s).select_by_visible_text(" ")

   2.直接通过xpath定位

eg:driver.find_element_by_xpath(" ").click()

from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time
driver = webdriver.Chrome()
driver.get('http://sahitest.com/demo/selectTest.htm')
time.sleep(1)
s1 = Select(driver.find_element_by_id('s1Id')) # 实例化Select
time.sleep(1)
s1.select_by_index(1) # 选择第二项选项:o1
time.sleep(1)
s1.select_by_value("o2") # 选择value="o2"的项
time.sleep(1)
s1.select_by_visible_text("o3") # 选择text="o3"的值,即在下拉时我们可以看到的文本
time.sleep(1)

三.弹出框的操作

弹出框基本为三种:alert(只有确定按钮和x的按钮)\confirm(比alert多个取消的按钮)\promp(内含文本框)

  alert操作:

1.先用switch_to_alert()方法切换到alert弹出框上

2.可以用text方法获取弹出的文本 信息

3.accept()点击确认按钮

4.dismiss()相当于点右上角x,取消弹出框

confirm操作:

1.先用switch_to_alert()方法切换到alert弹出框上

2.可以用text方法获取弹出的文本 信息

3.accept()点击确认按钮

4.dismiss()相当于点取消按钮或点右上角x,取消弹出框

prompt操作

1.先用switch_to_alert()方法切换到alert弹出框上

2.可以用text方法获取弹出的文本 信息

3.accept()点击确认按钮

4.dismiss()相当于点右上角x,取消弹出框

5.send_keys()这里多个输入框,可以用send_keys()方法输入文本内容

四.滚动条操作

滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,

这时候只能借助Js了,还好selenium提供了一个操作js的方法:

execute_script(),可以直接执行js的脚本。

scrollTo(x, y),第一个参数x是横向距离,第二个参数y是纵向距离

1.#滚动到底部
    js = "window.scrollTo(0,document.body.scrollHeight)"
    driver.execute_script(js)

2.#滚动到顶部
     js = "window.scrollTo(0,0)"
    driver.execute_script(js)

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.cnblogs.com/fenhong/")
#print (driver.name)
#滚动到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)
time.sleep(10)
#滚动到顶部
js = "window.scrollTo(0,0)"
driver.execute_script(js)

五.元素聚焦
   1.虽然用上面的方法可以解决拖动滚动条的位置问题,但是有时候无法确定我需要操作的元素

在什么位置,有可能每次打开的页面不一样,元素所在的位置也不一样,怎么办呢?

2.这个时候我们可以先让页面直接跳到元素出现的位置,然后就可以操作了。同样需要借助JS去实现。
   3.元素聚焦:

target = driver.find_element_by_xxxx()
   driver.execute_script("arguments[0].scrollIntoView();", target)

六.单选框,多选框操作

判断是否选中:is_selected()

选择的操作就直接定位到需要选择的框然后click()一下就好;全选时可以获取全部的选择框然后循环click()。

selenium+常见操作的更多相关文章

  1. selenium 常见操作事件2

    1.不打开浏览器驱动(加速) 注意:不启动浏览器器时,需要把浏览器驱动放置以下位置:①.python安装的根目录②.google的安装目录() from selenium import webdriv ...

  2. selenium怎么操作web页面常见的元素

    总结一下selenium怎么操作web页面常见的元素. 主要有: 上传 alter dialog prompt dialog confirm dialog select list radio box ...

  3. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  4. 动态单链表的传统存储方式和10种常见操作-C语言实现

    顺序线性表的优点:方便存取(随机的),特点是物理位置和逻辑为主都是连续的(相邻).但是也有不足,比如:前面的插入和删除算法,需要移动大量元素,浪费时间,那么链式线性表 (简称链表) 就能解决这个问题. ...

  5. C#路径/文件/目录/I/O常见操作汇总

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...

  6. X-Cart 学习笔记(四)常见操作

    目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 五.常见 ...

  7. 转:jQuery 常见操作实现方式

    http://www.cnblogs.com/guomingfeng/articles/2038707.html 一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备 ...

  8. jQuery 常见操作实现方式

    一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备忘. jQuery 常见操作实现方式 $("标签名") //取html元素 document. ...

  9. C#路径/文件/目录/I/O常见操作汇总<转载>

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...

随机推荐

  1. python中self与__init__怎么解释能让小白弄懂?

    python中self与__init__怎么解释能让小白弄懂? 这个问题其实没那么简单. 只说一下自己的理解. python 里所有的 object 都有三个属性, 标识(identity), 类型( ...

  2. SpringMVC-JSON数据交换

    在上Springmvc-JSON数据交换的时候,老师提出了两个问题: 1.JSON数据交互两个注解的作用? 2.静态资源访问的几种配置方式,并简述? 老师刚提出这两个问题的时候我一头雾水的.JSON数 ...

  3. 单元测试 - tox 使用

    1. 问题一 $ tox -e pep8 -- testdemo.server pep8 installed: alembic==,amqp==,appdirs==,Babel==,beautiful ...

  4. python内置下载服务器

    python内置了一个下载服务器.例如你的同事要让你传的文件位于某一个目录下面,那么你可以进入这个目录,然后执行下面的命令启动一个下载服务器 python2 python -m SimpleHTTPS ...

  5. Android中res下anim和animator文件夹区别与总结

    1.anim文件夹 anim文件夹下存放tween animation(补间动画)和frame animation(逐帧动画) 逐帧动画: ①在animation-list中使用item定义动画的全部 ...

  6. MHA ssh检查,repl复制检查和在线切换日志分析

    一.SSh 检查日志分析 执行过程及对应的日志: 1.读取MHA manger 节点上的配置文件 2.根据配置文件,得到各个主机的信息,逐一进行SSH检查 3.每个主机都通过SSH连接除了自己以外的其 ...

  7. nacos集群搭建

    nacos介绍 Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心).动态配置服务(可以做配置中心).动态 DNS 服务. 1.从官网下载nacos压缩 ...

  8. 基于双XCKU060+双C6678 的双FMC接口40G光纤传输加速计算卡

    基于双XCKU060+双C6678 的双FMC接口40G光纤传输加速计算卡 一.板卡概述 板卡采用基于双FPGA+双DSP的信号采集综合处理硬件平台,板卡大小360mmx217mm.板卡两片FPGA提 ...

  9. 2.SpringBoot整合Mybatis(一对一)

    前言: 上一篇整合springboot和mybatis的项目的建立,以及单表的简单的增删改查.这里是上一篇blog的地址:https://www.cnblogs.com/wx60079/p/11461 ...

  10. 009-saltstack之salt-ssh的使用及配置管理LAMP状态的实现

    1.salt-ssh的使用 官方文档:https://docs.saltstack.com/en/2016.11/topics/ssh/index.html (1)安装salt-ssh [root@l ...