千纸鹤

  博客园  ::  :: 新随笔  ::  ::  :: 管理
一、断言:
《一》断言机制的表达式:(1)assert (2)显式等待 (3)if...else

《二》断言
(1)公共代码:登录流程
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
# 登录流程
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('http://39.98.138.157/shopxo/index.php?s=/index/user/logininfo.html')
driver.find_element('name', 'accounts').send_keys('xuzhu666')
driver.find_element('name', 'pwd').send_keys('123456')
driver.find_element('xpath', '//button[text()="登录"]').click()
(2)第一种断言方式:assert
text = '退出1'
text1 = driver.find_element('link text', '退出').text
assert text == text1, '{0}不等于{1}'.format(text, text1)
assert el is True, '断言失败'
(3)第二种断言方式:显式等待
WebDriverWait(driver, 5, 0.5).until(lambda el: driver.find_element('link text', '退出1'),
message='流程运行失败,登录失败')
(4)第三种断言方式:if...else
text = '退出1'
text1 = driver.find_element('link text', '退出').text
if text == text1:
print(True)
else:
print(False)

二、JS执行器:第二种实现自动化测试的手段定位元素
《一》理论知识
Document对象是前端中非常核心的内容。UI自动化就是操作UI界面,也就是所谓的前端对象。在特殊的对象处理中,很可能在定位,操作上会因为selenium的限制,导致很难处理。就可以通过document对象来进行操作。
用途:
(1)定位元素:document.getElementByID('kw')
Document提供的元素定位方式:
1.getElementByID(单元素定位)
2.getElementsByClassName(多元素定位)
3.getElementsByName(多元素定位)
4.getElementsByTagName(多元素定位)
5.getElementsByNameNS(多元素定位)
(2)通过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

《二》案例示范
(1)公共代码:登录流程
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)
(2)JS执行器一:滚动条
js = 'window.scrollTo(200,500)'
driver.execute_script(js)
(3)JS执行器二:定位元素(加了s的查找元素,返回是list结果)
js1 = 'return document.getElementsByName("wd")'
el=driver.execute_script(js1)
print(js1) 输出结果:[对象]
(4)JS执行器三:设置并获取文本元素
js2 = 'return document.getElementById("kw").innerHTML="虚竹"'
t = driver.execute_script(js2)
print(t) 输出结果:结果
(5)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) 输出结果:新闻
(6)JS执行器五:元素聚焦在页面
js4 = 'arguments[0].scrollIntoView()'
# js语句都是通过js执行器来进行注入
driver.execute_script(js4, el)
posted on 2022-05-09 14:41  隆江猪脚饭  阅读(315)  评论(0编辑  收藏  举报