selenium-JavaScript的处理

Posted 测试爬虫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium-JavaScript的处理相关的知识,希望对你有一定的参考价值。

javascript的处理

在自动化过程中,遇到js处理的元素,需要使用js语言对元素进行操作,例如,滑动到浏览器的底部或者顶部,时间控件的处理,元素可见不可见以及富文本的处理等,都需要js语言的支持,在selenium中,对js脚本的调用方法是execute_script.下面结合实例来讲述。

元素不可见的操作

处理方法是用js把隐藏的显示出来,方法如下:
js="document.getElementById(‘li‘).style.display=‘block‘;"
driver.execute_script(js)

浏览器滑动操作

以百度搜索为例子,分别操作滑动到底部,滑动到顶部操作,代码如下:
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.implicitly_wait(30)
driver.maximize_window()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(4)
‘‘‘ 进行滑动操作,滑动到底部‘‘‘
downjs = "var q=document.documentElement.scrollTop=10000"
driver.execute_script(downjs)
‘‘‘ 点击下一页,进入到第二页‘‘‘
driver.find_element_by_partial_link_text("下一页").click()
‘‘‘进行滑动操作,滑动到顶部‘‘‘
upjs = "var q=document.documentElement.scrollTop=10000"
‘‘‘ 先执行滑动到底部操作,在滑动到顶部‘‘‘
driver.execute_script(downjs)
time.sleep(3)
driver.execute_script(upjs)
time.sleep(2)
driver.quit()

时间控件的处理

时间控件在测试过程中经常遇到,但大部分时间控件都是只读属性,要实现在只读属性的时间控件输入时间,可以先取消时间控件的只读属性,取消只读属性后,在Input输入框输入value即可,操作代码如下:

from selenium import webdriver
import time

driver= webdriver.Chrome()
def startJs(startTime):
‘‘‘开始时间中输入自定义的时间‘‘‘
js = "$("input[placeholder=‘开始时间>当前时间‘]").removerAttr(‘readonly‘);" "$("input[placeholder=‘开始时间>当前时间‘]").attr(‘value‘,{0})".format(startTime)
driver.execute_script(js)

def endJs(endTime):
‘‘‘结束时间输入自定义的时间‘‘‘
js = "$("input[placeholder=‘结束时间>当前时间‘]").removerAttr(‘readonly‘);" "$("input[placeholder=‘结束时间>当前时间‘]").attr(‘value‘,{0})".format(endTime)
driver.execute_script(js)

startJs("2019-10-10 10:00:00")
time.sleep(3)
endJs("2019-10-10 10:02:00")

以上是关于selenium-JavaScript的处理的主要内容,如果未能解决你的问题,请参考以下文章

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

错误处理:one of the variables needed for gradient computation has been modified by inplace operation(代码片

Android 安装包优化使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )(代码片

Android 高性能音频Oboe 音频流打开后 耳机 / 音箱 插拔事件处理 ( 设置 Oboe 音频设备 ID | setDeviceId 函数原型 | AudioStream 音频流 )(代码片