当webdriver遇到无法完成的操作时候,这个时候可以使用javascript来完成,webdriver提供了execute_script()接口来调用js代码。

执行js有两种场景:

1、在页面上直接执行js

2、在某个已经定位的元素上执行js

百度新闻网页举例(js代码与浏览器有兼容问题)

1、向下滚动,举例内容为百度新闻网页滚动

语法:document.documentElement.scrollTop=10000

①document.body:网页正文

②scrollTop=10000:滚动一万像素 浏览器滚动条下滑操作

import time
from selenium import webdriverdriver  = webdriver.Chrome()
driver.get('http://news.baidu.com/')#打开百度新闻页面
driver.maximize_window()js_str2 = 'document.documentElement.scrollTop=10000'#document.body:网页正文 scrollTop=10000:滚动一万像素 浏览器滚动条下滑操作,js代码与浏览器有兼容问题
driver.execute_script(js_str2)

百度新闻为瀑布流页面,若是想一直滚动,则可写个for循环实现

import time
from selenium import webdriverdriver  = webdriver.Chrome()
driver.get('http://news.baidu.com/')#打开百度新闻页面
driver.maximize_window()js_str2 = 'document.documentElement.scrollTop=10000'
for i in range(6):#6为滚动的次数time.sleep(2)driver.execute_script(js_str2)

2、上下滚动,举例内容为百度新闻网页滚动

import time
from selenium import webdriverdriver  = webdriver.Chrome()
driver.get('http://news.baidu.com/')#打开百度新闻页面
driver.maximize_window()js_str3 = 'document.body.scrollTop=%d'
for i in range(10):time.sleep(2)if(i%2==0):driver.execute_script(js_str3%10000)#向上正数else:driver.execute_script(js_str3%-10000)#向下负数

3、给属性加边框,举例内容为给百度新闻搜索框加红色边框

语法:driver.execute_script("arguments[0].style.border='5px solid red'",input_element)

①arguments[0]:代表元素e style.border:设置边框样式

②5px solid red:五个像素的红色实线

③input_element:选中的元素

若想要修改更多属性,可参考转载文章:UI自动化(2)---CSS基础知识 - MaggieTang - 博客园

import time
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver  = webdriver.Chrome()
driver.get('http://news.baidu.com/')
driver.maximize_window()
time.sleep(3)input_element = driver.find_element(By.CSS_SELECTOR,'span#s_ipt_wr input.word')#定位到百度新闻页面的输入框
driver.execute_script("arguments[0].style.border='5px solid red'",input_element)#arguments[0]:代表元素e style.border:设置边框样式,5px solid red 五个像素的红色实线

4、移除属性,举例内容为去除“百度一下”按钮的文案(常用场景为定位时间控件时,如控制仅能选择时,改成可以输入)

语法:driver.execute_script('arguments[0].removeAttribute("value"),remove_element)

①remove_element为需要被移除的元素定位值

②value为需要被去除的属性名

import time
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver  = webdriver.Chrome()
driver.get('http://news.baidu.com/')
driver.maximize_window()
time.sleep(3)remove_element = driver.find_element(By.ID,'s_btn_wr')#定位到百度一下按钮
driver.execute_script('arguments[0].removeAttribute("value"),remove_element)#去除百度一下文案

5、修改属性,举例为将“百度一下”文案改为“我是丸子”

语法:driver.execute_script('arguments[0].setAttribute("value","我是丸子")',update_element)

import time
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver  = webdriver.Chrome()
driver.get('http://news.baidu.com/')
driver.maximize_window()
time.sleep(3)update_element = driver.find_element(By.ID,'s_btn_wr')#定位到百度一下按钮
driver.execute_script('arguments[0].setAttribute("value","我是丸子")',update_element)#将百度一下文案替换为我是丸子

Python+Selenium UI自动化 - 调用JS代码相关推荐

  1. python selenium UI自动化解决验证码的4种方法

    测试环境 windows7+ firefox50+ geckodriver # firefox浏览器驱动 python3 selenium3 selenium UI自动化解决验证码的4种方法:去掉验证 ...

  2. Python Selenium UI自动化:滚动条滑动

    文章目录 问题 滑动至固定位置 Window 对象方法 - scrollTo js&python:滑动至固定位置 滑动至元素 元素对象方法 js&python:滑动至元素 问题 在UI ...

  3. Python Selenium UI自动化 ⽂件上传

      UI自动化进行文件上传,其实本质就是将所需上传的文件路径,传递给后端服务即可,至于读取文件的过程,其实开发人员已经在后端服务中完成了.所以我们要做的就是:拿到文件路径 -> 传出去.那么这里 ...

  4. Python+Selenium UI自动化 - alert/confirm/prompt窗口处理方法

    WebDriver中处理原生JS的alert.confirm以及prompt非常方便,三种弹出窗口均无法直接通过页面元素定位,不关闭窗口无法在页面上做其他操作 语法:         text:返回a ...

  5. Python+Selenium UI自动化 - cookie处理方法及适用场景

    方法一:手动登录系统后,F12查看页面cookies的值,键值对的形式写入代码中 add_cookie方法,实际编写时,遇到某些参数无效的报错 可以直接把对应的键值对删除,举例仅写了一行数据,实际运行 ...

  6. python 爬虫+selenium 全自动化下载JS动态加载漫画

    ** python 爬虫+selenium 全自动化下载JS动态加载漫画 最近刚学的python,代码可能并不规范,希望大家见谅! 爬取之前,我们首先需要做一些准备工作,因为很多网站都有反爬检索,为了 ...

  7. Python Selenium UI 实现视频自动化播放

    Python Selenium UI 实现视频自动化播放 1.需求:实现某一课程自动播放 from selenium import webdriver from selenium.webdriver. ...

  8. Python+Selenium WebUI自动化框架 -- 实现特殊PO模型

    前言: 设计执行格式,封装PO模型工厂,实现PO模型脱离代码,一套代码执行所有项目的UI自动化,让UI自动化框架脱离高成本.低效率时代,将用例的重用性贯彻到极致,让烦人的PO模型变得无所谓,让一个测试 ...

  9. python+selenium实现自动化连接校园网

    python+selenium实现自动化连接校园网(资源下载链接在总结) 校园网的自动连接 在学校里面,我经常会用到校园WiFi.我个人使用的是办移动套餐送的wifi套餐,因此,我连接的WiFi是NJ ...

最新文章

  1. Java Fork/Join 框架
  2. bootstrap获取弹框数据_Bootstrap模态弹出框的实例教程
  3. parseInt(string, radix)
  4. 一种基于随机投影的本地差分隐私高维数值型数据收集算法
  5. 分子模拟的理论与实践_基于分子模拟的数据驱动发现流体力学宏观方程
  6. Paypal如何实现循环扣款(订阅)?
  7. wasatch排版教程_[2010年国内外最新最全最专业的设计软件下载.docx
  8. hdu 5025 Saving Tang Monk(bfs+状态压缩)
  9. 智能合约开发 基于Hardhat(实操)
  10. Mac 打造开发工作环境
  11. 报错Exception opening port “18080“ (port may be in use), cause: “java.net.BindException: Address alrea
  12. 西南大学计算机考研资料汇总
  13. tcl 950 android 7,TCL 950测评:商务旗舰手机界的一股清流
  14. 你不能不知道的荣耀V40隐藏功能
  15. 微软speeh sdk5.1安装及简单的读取文字
  16. Spring三大核心思想之AOP(面向切面编程)
  17. linux qt地图开发教程,基于QT的电子地图的设计与实现
  18. 鸿蒙不支持手机,阻碍鸿蒙2.0上不了手机的问题找到了,别再埋怨华为
  19. C语言malloc不需要强转
  20. python画生日_使用PYTHON制作一个生日查看器

热门文章

  1. 华师大 OJ 3053
  2. 许久未曾写过文章了,如今,再度出发:一个一般学校的大三学子,立足过去,展望未来,模糊的规划,坚定的方向,不断前进。
  3. 读书百客:《四时田园杂兴·其一》鉴赏
  4. 如何减少http请求
  5. 2022年流动式起重机司机考试题库模拟考试平台操作
  6. 编写python 函数,实现冒泡排序算法。
  7. 如何划分用户生命周期?
  8. 计算机一级是word2010,WORD2010讲义计算机一级
  9. 腾达ac1200远端服务器无响应,连3个磊科MG1200ac必死机
  10. Qt udp组播Qt udp组播