js操作:日期框

本部分涉及两个知识点:DOM树和js

DOM树教程链接:

https://www.w3school.com.cn/htmldom/index.asp

js教程链接

https://www.w3school.com.cn/js/index.asp

用js在浏览器控制台操作

测试过程中使用js对页面元素进行增删改查

示例1:把元素只读属性取消,变成可手动输入

使用代码实现更改出发日期:

方法一

# js代码
js_code = 'a = document.getElementById("train_date");' \
'a.removeAttribute("readonly");' \
'a.value = ("2021-05-21");'

#执行js代码
driver.execute_script(js_code)

方法二

# 通过Python代码找到元素对象
loc = (By.ID,"train_date")
WebDriverWait(driver,20).until(EC.visibility_of_element_located(loc))
ele = driver.find_element(*loc)
set_time = "2021-05-21"

js_code = 'arguments[0].removeAttribute("readonly");' \
'arguments[0].value = arguments[1];'

driver.execute_script(js_code,ele,set_time)

js_code的arguments[0]是外部传参,即execute_script()函数的ele参数,arguments[1]是execute_script()的set_time参数

用Ctrl+b 查看execute_script()源码,可以发现函数的传参除了script,还有一个 *args,即可以传入多个参数,示例中的ele和set_time就是这个*args的参数列表,[0][1]则代表参数列表的位置

js操作:滚动

大部分网页会自动滚

元素本身:ele.location_once_scrolled_into_view

示例:下面这两行代码,会自动滚到元素位置停住

ele = driver.find_element(*loc)
ele.location_once_scrolled_into_view

js方法:ele.scrollIntoView()  滚动到元素可见区域停住

ele = driver.find_element(*loc)
js_code = 'arguments[0].scrollIntoView()'
driver.execute_script(js_code,ele)

这里推荐使用元素本身的方法就可以了

上述方法并非滚动条操作,若软加载(边滚动边加载),要用滚动条操作

滚动条操作:暂略

Python+Selenium - js操作的更多相关文章

  1. python selenium 相关操作

    selenium : 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fi ...

  2. python + selenium + Js 处理轮动条

    selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候需要借 ...

  3. python+selenium+js 处理滚动条

    selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候需要借 ...

  4. python selenium --browser 操作

    本节知识点: 打印URL 将浏览器最大化 设置浏览器固定宽.高 操控浏览器前进.后退 打印URL 上一节讲到,可以将浏览器的title打印出来,这里再讲个简单的,把当前URL打印出来.其实也没啥大用, ...

  5. Python+selenium(操作隐藏元素)

    测试过程中,偶尔会碰到一些页面的隐藏元素,如下,是小编举的一个简单的例子: test.html <html> <head></head> <body> ...

  6. python+Selenium之操作滚动条

    当我们做测试的时候,如果页面过长,就会定位元素失败,这时可以使用move_to_element方法跳到该元素的位置再操作: from selenium.webdriver.common.action_ ...

  7. Python+selenium 之操作Cookie

    在验证浏览器中cookie是否正确时,有时基于真实cookie的测试是无法通过白盒和集成测试进行的.Webdriver提供了操作Cookie的相关方法,可以读取,添加和删除cookie信息. 文本we ...

  8. python selenium句柄操作

    一.获取当前窗口句柄 1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别. 2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换.但是脚本没长眼 ...

  9. Python+Selenium - 键盘操作

    导包代码: from selenium.webdriver.common.keys import Keys 用法: driver.find_element("id","k ...

随机推荐

  1. 03- 手机App功能测试要点以及登录页面的测试

    当你进入一个互联网公司以后,首先对公司结构有所了解,然后遇到问题找对应的工作人员,效率就事半功倍了. 公司的结构: 产品经理 项目经理 设计师 开发人员 测试人员 运维人员 运营人员 配置管理 App ...

  2. hdu4876 深搜+(随机枚举剪枝)

    题意:       给你n个数,让你从选择k个数,然后排成一个环(k个数的顺序随意,但是排成一个环后就不能变了),然后可以在这个环上任意的找连续w个数(w<=k),可以找多次,得到一个值等于当前 ...

  3. ART模式下基于Xposed Hook开发脱壳工具

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78092365 Dalvik模式下的Android加固技术已经很成熟了,Dalvik ...

  4. 如何以最简单的方式安装 KALI 渗透测试框架系统

    0x01 第一步下载 KALI 百度搜索 KALI 官网,找到下载区,我选的是 64 位标准版,但是推荐下载 32 位(功能貌似更全) 这个为下载后的 iso 镜像文件 0x02 第二步打开虚拟机,配 ...

  5. XCTF-FlatScience

    FlatScience 题目描述 啥描述也没有 解题过程 页面有好多链接,除了论文pdf之外,还有子目录下的index.html, 比如:/1/index.html,/1/3/index.html 扫 ...

  6. 比物理线程都好用的C++20的协程,你会用吗?

    摘要:事件驱动(event driven)是一种常见的代码模型,其通常会有一个主循环(mainloop)不断的从队列中接收事件,然后分发给相应的函数/模块处理.常见使用事件驱动模型的软件包括图形用户界 ...

  7. 软负载Nginx和硬负载F5的优缺点对比

    对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据分流到多台设备的一个转发器.​ a.软件负载均衡解决方案 在一台服务器的操作系统上,安装一个附加软件 ...

  8. golang:TCP总结

    在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程."IP地址+端口号"就对应一个socket.欲建立连接的两个进程各自有一个 ...

  9. 25.Qt Quick QML-500行代码实现"合成大西瓜游戏"

    "合成大西瓜"这个游戏在年前很火热,还上过微博热搜,最近便玩了一阵还挺有意思的,所以研究了一下小球碰撞原理,自己亲自手写碰撞算法来实现一个合成大西瓜游戏.并支持任意大小布局,你想玩 ...

  10. [bug] Python AttributeError: module 'web' has no attribute 'application'

    原因 文件名是web.py,与包名web冲突 解决 重命名文件,再运行