selenium 操作浏览器

实际上Selenium已经考虑到,浏览器需要调用对应Selenium的API方法完成相应操作,即浏览器已经完成内置了,并不需要通过元素定位。浏览器常见的7种基本操作如下:

1.浏览器前进操作
  • forward():在初始操作时,不存在前进操作,一般与back配合使用。
  • back():后退操作(当前对象必须存在上下文)
2.浏览器的最大化,最小化,全屏
  • get_driver_maximize_window():实现窗口最大化操作
  • get_driver_minimize_window():实现窗口最小化操作
  • get_driver_fullscreen_window():实现窗口全屏操作
3.浏览器close和quite方法的区别

close表示关闭当前对象所处页面(操作页面)的窗口,quite表示关闭所有的页面窗口并关闭驱动器。如果存在一个窗口,其效果是相同的。

4.浏览器的相关属性获取

print(get_driver.current_url):获取当前对象的url地址

print(get_driver.current_window_handle):获取当前对象的句柄。

print(get_driver.title):获取当前对象的标题。

print(get_driver.window_handles):获取当前对象的所有句柄。

5.浏览器句柄操作

驱动器对象.switch_to_window(句柄名):这种方法属于保留方法,不建议使用,后期会删除;句柄名可以通过先获取所有句柄然后定义其索引的方式获取。

**注意:**如果存在多个句柄,建议对每个句柄进行命名操作,便于句柄之间的切换。

6.浏览器中的alert框处理

alert框是无法直接进行元素定位的,需要使用switch_to.alert先切换到alert对象中,然后调用对应的方法执行。accept()方法表示确定;dismiss()方法表示取消。也可以获取其文本内容,调用text属性即可。

7.浏览器的滚动操作

浏览器滚动条无法直接进行定位,所以需要借助JS脚本完成操作。

  1. 指定上下滚动的高度

    js 复制代码
    js="var browser=document.documentElement.scrollTop=100"
    get_driver.execute_script(js)
  2. 实现左右滚动,还可以实现上下滚动。

    python 复制代码
    get_driver.execute_script("window.scrollTo(0,100)")
    #window.scrollTo(x,y) x:横向滚动,y:纵向滚动
    #window.scrollBy(x,y)表示相对当前的坐标点进行再次滚动后的x,y坐标的值。
  3. 不考虑其横向滚动和纵向滚动的坐标值,直接滚动到指定元素位置

    python 复制代码
    arguments[0].scrollIntoView()
    #arguments[0]表示传入的定位元素的对象
WebElement接口的常用方法:
  • clear:清除元素的内容
  • send_keys:在元素上模拟按键输入
  • click:点击元素
  • submit:提交表单
  • size:返回元素的尺寸
  • text:获取元素的文本
  • get_attribute(name):获取属性值
  • is_displayed():设置该元素是否可见
相关推荐
颜进强8 分钟前
18 · NestJS动态模块与 forRoot:`imports: [ConfigModule.forRoot({...})]` 到底在 import 什么
前端·后端·ai编程
YZ12255220 分钟前
【Docker专题】使用Docker部署Vue-Flask项目前后端分离版【前端Docker部署】
前端·vue.js·docker
liangshanbo121522 分钟前
浏览器渲染过程:高级前端面试题
前端
太子釢26 分钟前
React 函数组件与 Hook 实践指南
前端·react.js
颜进强34 分钟前
17 · 自定义 Provider 四形态:useValue / useClass / useFactory / useExisting 到底在选什么
前端·后端·ai编程
传人once43 分钟前
网页文字滚动效果如何做
前端·css·html·jquery·html5
liangshanbo12151 小时前
面试题:React 中 Lane 和 Scheduler 是怎么配合的?
前端·react.js·前端框架
liangshanbo12151 小时前
请求拦截器相关面试题
java·前端·javascript
ShawnLiaoking1 小时前
ADS305 Big Data Lecuture4 Web Scraping
大数据·前端
liangshanbo12151 小时前
React面试题:Hooks 为什么不能在分支和循环里面写?
前端·javascript·react.js