Selenium断言与JS执行器

38 篇文章 6 订阅
23 篇文章 0 订阅
本文介绍了如何使用Selenium进行网页自动化测试,包括断言技术、JS执行器的应用,如操作DOM元素属性、执行JavaScript代码、滚动条控制和反爬虫策略。涉及document对象常用函数及元素定位技巧。
摘要由CSDN通过智能技术生成


1.断言

from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('http://39.98.138.157/shopxo/index.php')
driver.find_element('link text','登录').click()
driver.find_element('name','accounts').send_keys('sixiaoyou')
driver.find_element('name','pwd').send_keys('xxx')
driver.find_element('xpath','//button[text()="登录"]').click()

# 断言部分
# 定义预期结果,并获取实际结果
expected = '退出1'
try:
    reality = driver.find_element('link text','退出1').text

except Exception as e:
    print(e)
    reality = None
# 关键的断言关键字
assert expected == reality,'断言失败:{0}不等于{1}'.format(expected,reality)

#--coding: utf-8--
#@Time :2022/7/17 21:24
#@Author: sixiaoyou
#@Email: 834628301@qq.com
#@File: js_demo.py

2.JS执行器

from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.set_window_size(800,300)
driver.get('http://www.baidu.com')

1.document对象执行的常见函数

'''
    1.removeAttribute(attribute_name) 移除指定对象的指定属性
    2.setAttribute(attribute_name,value) 设置指定对象的指定属性和值
    3.arguments[0] 在js中可以理解为占位符 有且只能这么写
    4.滚动条操作:
        window.scrollTo(x,y) x表示横轴,横向滚动条 y表示纵轴,上下滚动条
        arguments[0].scrollIntoView()精确定位到元素,并聚焦在页面中展示
        js执行器在实际执行过程中,如果想要获取执行结果,便于后续的使用,就一定要在js中添加return关键字
        滚动条操作的核心在于元素的获取,不是在于玩弄滚动条
'''

2.设置元素的属性

# js = "document.getElementById('kw').setAttribute('readonly','True')"

3.移除元素的属性

# js = "document.getElementById('kw').removeAttribute('name')"

4.定位元素,并修改元素的文本

# el = driver.find_element('link text','新闻')
# 获取指定元素的文本信息
# js = 'return arguments[0].innerHTML="司小幽新闻"'

# 通过占位符来实现selenium与document的关联
# js1 = 'arguments[0].innerHTML="司小幽新闻"'

5.用于执行js语句的函数

# a = driver.execute_script(js,el)
# print(a)

6.滚动条

driver.find_element('id','kw').send_keys('虚竹')
driver.find_element('id','su').click()
el = driver.find_element('link text','下一页 >')

7.获取元素的指定属性值

text = el.get_attribute('href')
print(text)

8.定位元素,并在页面中心显示

js = 'arguments[0].scrollIntoView()'
driver.execute_script(js,el)

3.应对反爬虫

# 通过修改webdriver属性为False,一定是在访问系统之前,在启动浏览器后第一步就是运行这个
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{
    "source": """
    Object.defineProperty(navigator,'webdriver',{
        get: () => false
    })
"""
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司小幽

真诚赞赏,手留余香。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值