selenium:JS执行器

Document对象是前端中非常核心的内容。UI自动化就是操作UI界面,也就是所谓的前端对象。在特殊的对象处理中,很可能在定位,操作上会因为selenium的限制,导致很难处理。就可以通过document对象来进行操作。

(1)在开发者工具Console中定位元素:document.getElementByID('kw')  

         Document提供的元素定位方式:
                 1.getElementByID(单元素定位)
                 2.getElementsByClassName(多元素定位)
                 3.getElementsByName(多元素定位)
                 4.getElementsByTagName(多元素定位)
                 5.getElementsByNameNS(多元素定位)

(2)在开发者工具Console中通过document修改元素的属性,或者添加删除属性

        1.innerHTML(设置text文本):
                document.getElementByID('kw').innerHTML='文本'

        2.setAttribute(设置元素属性、添加元素属性和属性元素赋值):
                document.getElementByID('kw').setAttribute('添加属性','属性赋值')

        3.removeAttribute(移除指定属性):                                                                                                         document.getElementByID('kw').removeAttribute('readonly')  

                readonly(true)为常见日期控件禁止输入,仅可读。

(3)在Selenium中提供有JS执行器的函数,专门用于执行JS脚本,当js执行需要获取结果以便后续调用,一定要在js中加上return。

from time import sleep
from selenium import webdriver

# 打开百度
driver = webdriver.Chrome()
driver.set_window_size(200, 400)
driver.get('http://www.baidu.com')
sleep(3)

# JS执行器一:滚动条
js = 'window.scrollTo(200,500)' # 聚焦在页面下侧合右侧的滚动条
driver.execute_script(js)

# JS执行器二:定位元素(加了s的查找元素,返回是list结果)
js1 = 'return document.getElementsByName("wd")'#有返回值时要加return
el=driver.execute_script(js1)
print(js1)  #输出结果:[对象]

# JS执行器三:设置并获取文本元素
js2 = 'return document.getElementById("kw").innerHTML="虚竹"'
t = driver.execute_script(js2)
print(t)  #输出结果:[虚竹]

# JS执行器四:Selenium+Document实现元素操作(selenium定位+js操作元素)
el = driver.find_element('link text', '新闻')
js3 = 'return arguments[0].innerHTML'  # arguments[0] 可以直接理解为是占位符
t=driver.execute_script(js3, el)
print(t)  #输出结果:[新闻]

# JS执行器五:元素聚焦在页面
el = driver.find_element('link text', '新闻')
js4 = 'arguments[0].scrollIntoView()'

# js语句都是通过js执行器来进行注入
driver.execute_script(js4, el)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值