元素操作(附带鼠标悬停)

一些课程回顾,问题原因总结
函数只有在return的时候,才会返回一个数据。返回数据了才可以赋值的
报错:

  1. 等待时间不够
  2. 返回的元素不是你想要的
  3. 确实是你表达式写错了
  4. 有句柄未切换或者有iframe未切换
  5. 定位错元素了。

元素操作

from time import sleepfrom selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.support.select import Selectdriver = webdriver.Chrome()
# 浏览器窗体的最大化
driver.maximize_window()
# 设置窗体大小尺寸
driver.set_window_size(1000, 200)# 访问指定文件和url
driver.get(r'C:\Users\asus\Desktop\xxx.jpg')
driver.get('http://www.baidu.com')# 浏览器窗体的最小化
driver.minimize_window()# 浏览器的前进和后退,以及刷新
driver.forward()
driver.back()
driver.refresh()
# 获取title
print(driver.title)
# 元素定位
driver.find_element(定位方法,定位值)
# 页面中的元素操作都是基于元素获取之后才能够进行的。
# 输入和点击
driver.find_element('xpath', '//*[@id="form"]/span[1]/span[1]').click()
鼠标悬停
'''下拉列表框:现如今市场上基本都是基于input和div来实现的下拉列表框div,通过click来进行操作input下拉列表框:1. 通过click来进行操作(是推荐行为)2. 如果有readonly,就先remove掉,再通过send_keys输入(容易出现问题)select标签下拉列表框:是最为传统的形式,相对有年代感的系统才会存在。
'''
# select标签下拉列表框
select = Select(driver.find_element('id', 'deviceType'))
# 获取指定的值,进行选择
select.select_by_index(1)
select.select_by_value('11')
select.select_by_visible_text('自动驾驶')
# div下拉列表框与鼠标悬停
el = driver.find_element('xpath', '//span[text()="设置"]')
# 导入actionchains类进行悬停操作
ActionChains(driver).move_to_element(el).perform()
# 高级搜索
driver.find_element('link text', '高级搜索').click()
sleep(2)
driver.find_element('xpath', '//*[@id="adv-setting-gpc"]/div/div[1]').click()
sleep(1)
driver.find_element('xpath', '//p[text()="最近一月"]').click()
# 退出浏览器与进程,释放资源
driver.quit()

句柄和iframe

课程笔记

    页面元素操作时,可能会遇到有的内嵌窗体,Iframe弹出新页面时,driver还是操作着原来的页面,是因为有句柄的存在一个页面 == 一个句柄操作新的页面,就需要切换到新的句柄,是一个固化的模式1. 获取所有句柄2. 切换到新的句柄PS:如果要关闭原有的标签页,操作新的页面:1. 获取所有句柄2. 关闭原有标签页3. 切换到新句柄PPS:在操作页面时,一定注意最多保留两个页面存在,不要超过两个

总结的笔记

iframe (要切换到iframe ,但是不能操作iframe外的东西了)

QQ登录成功后(iframe直接关闭的情况),如果还要继续操作,需要切换回原来的页面

切出iframe(iframe不关闭,类似这个弹窗关闭了),需要切出

# 完整代码
from time import sleepfrom selenium import webdriverdriver = webdriver.Chrome()
sleep(2)
driver.maximize_window()
# 进入QQ登录
driver.get('http://music.163.com')
driver.implicitly_wait(10)
driver.find_element('link text', '登录').click()
driver.find_element('link text', '选择其他登录模式').click()
driver.find_element('id', 'j-official-terms').click()
driver.find_element('link text', 'QQ登录').click()
sleep(2)
print(driver.title)
# 打印出来是网易云音乐的# 切换句柄
handles = driver.window_handles  # 获取当前所有句柄
print(handles)# 关闭当前标签页
driver.close()
driver.switch_to.window(handles[1])  # 切换到新的句柄页
print(driver.title) # 打印出来的是“QQ帐号安全登录”# 切换到iframe:通过id,name直接切换iframe,也可以定位iframe元素,将元素作为参数传递
driver.switch_to.frame(driver.find_element('id', 'ptlogin_iframe'))
driver.find_element('id', 'img_out_508419907').click()
# 从iframe切换到默认内容
driver.switch_to.default_content()
sleep(1)
# 切换回原有句柄
driver.switch_to.window(handles[0])
sleep(1)
print(driver.title)
补充

selenium 4.0中(开启新的浏览器/不用切换句柄)
新增一个浏览器或者句柄页并且直接进行切换:通过参数来定义(tab,window)
driver.switch_to.new_window(‘tab’) # tab表示标签页,window表示浏览器
打开后新增了一个标签页,或者新的浏览器

默认聚焦第一个标签页,通过new_window后可直接操作该页面(并不用再做句柄的切换)

'''Selenium4.0新增的关于浏览器与标签页的管理new_window()函数只支持4.0及以上版本
'''
from time import sleepfrom selenium import webdriverdriver = webdriver.Chrome()
# handles = driver.window_handles
# print(handles)
# sleep(2)
# 新增一个浏览器或者句柄页并且直接进行切换:通过参数来定义(tab,window)
driver.switch_to.new_window('tab')  # tab表示标签页,window表示浏览器
handles = driver.window_handles
print(handles)

自动化基础笔记--元素操作相关推荐

  1. APP自动化基础之元素定位

    mobileby 在开始讲元素定位的方式时,我们先来看下appium中元素定位的相关模块:mobileby.py: 在这里可以看到,MobileBy这个类继承了selenium中的元素定位的类:By, ...

  2. 软件测试 自动化测试 Web自动化测试01 selenium 定位元素方法 元素操作 自动化脚本开发

    文章目录 1 自动化测试概述 1.1 测试的目的 1.2 自动化测试的优点 1.3 自动化测试的缺点 1.4 自动化测试工具 1.5 自动化测试流程 2 selenium基础 2.1 selenium ...

  3. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 1 Create table [if not exists] 表名( 2 字段名 数据类型, 3 字段名 数据类型, 4 字段n 数据类型 --最后一 ...

  4. js初识、JS基础交互、JavaScript 元素操作

    js初识 js外链引入 外链引入.js 通过script标签的src属性引入外部js文件在外部新建一个后缀名为js的文件注意:用于引入外部js文件的script标签,就不要再写其他的js代码,不会执行 ...

  5. Redis基础笔记(下)

    Redis基础(下) Linux命令 1.cd:更改目录 cd~回到初始目录 cd - 回到上级目录 2.mkdir 创建目录 3.cp 拷贝文件 eg:cp redis 5.06/redis.con ...

  6. .NET基础笔记(C#)

    作者:七步. 出处:http://www.cnblogs.com/dongyu9521/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保 ...

  7. JQuery 基础笔记

    JQuery 基础笔记 1. jQuery 概述 1.1 jQuery 是什么? 1.2 jQuery 简单应用 1.3 jQuery 功能应用 1.4 jQuery 技术优势 1.5 jQuery ...

  8. 前端-Vue.js从入门到精通基础笔记(理论+实操+知识点速查)

    #[2022.3]尚硅谷Vue.js从入门到精通基础笔记(理论+实操+知识点速查) 前言 本文完全基于 参考资料:加工整理而成,包括其代码,案例,资源等.前置知识是学习尚硅谷的视频教程,本文配合其教程 ...

  9. JavaSE基础笔记——常用API、Lambda、常见算法

    日期与时间 时间日期是在任何一个程序系统里几乎都不可能忽略掉的数据量,而且大量的算法在底层都会使用到时间日期数据值作为算法的基本种子(随机数算法或加密算法都经常用到). 计算机里,时间日期的本质 作为 ...

最新文章

  1. JAVA《第一次作业》
  2. gdi 中发生一般性错误_SMC/SMD波峰焊接过程中的注意事项分析
  3. Linux 重新挂载分区的方法
  4. 2017西安交大ACM小学期 刷墙[折半枚举+异或]
  5. mysql标识列从一开始_mysql中标识列是什么意思有什么用
  6. java long类型判断_Java中的long类型和Long类型比较大小
  7. 常用的WebService
  8. mysql主主互备模式配置
  9. java基于springboot小区水电量电费管理系统
  10. winrar5.31 专用激活key
  11. php更改文件为只读,word只读模式怎么修改
  12. antd4.x [antd: Switch] `value` is not a valid prop, do you mean `checked`? 解决办法
  13. Oracle安装时先决条件检测失败
  14. 基于STM32-F401的平衡小车
  15. linux 升级golang版本,go语言如何升级版本
  16. Arcgis利用dem数据生成等高线
  17. 群里关于一个硬件电路的讨论,纹波大导致烧坏主芯片
  18. 计算机关机重启命令,怎么使用dos命令重启电脑?用dos命令重启电脑关机的方法...
  19. 关于b站M_Studio的学习笔记2
  20. dreamweaver半角空格_Dreamweaver初学者小技巧应用系列--1.快速插入空格

热门文章

  1. python中uint8函数_NumPy性能:uint8对float和乘法对除法?
  2. CSS+JS实现图片集展示(二)
  3. 以互联网思维做好客户端软件
  4. CAS单点登录的实现
  5. 简单四步開始树莓派上的Docker之旅
  6. js获取当前年月日的方法 以及格式整理
  7. BIM叠加CAD、地形数据 道路设计方案汇报更直观
  8. CentOS8安装Geant4笔记(三):Geant4介绍、编译、安装支持Qt5界面并运行exampleB1例程显示Qt界面
  9. 中国海洋大学计算机系实习报告,中国海洋大学 海洋学实习报告
  10. Convex Optimization: 2 Convex sets