ui自动化-则神第一天01-html基础和元素定位之面试问题
get refresh 才会有等待,等待页面图片和文件静态加载,还有动态js渲染加载完毕,要等,其余的没有等待时间
肉眼看到了不一定能操作
back 返回
forward 前进
refresh 刷新
get 三种获取方法??????
title 标题
current_url 当前页,获取当前的网址,比如判断当前的网址是什么时候
page_source 网页的源码
print(driver.title)#百度的左上角标题
print(driver.current_url)#获取请求网址
print(driver.page_source)#获取前端的源码
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
print(driver.title) 标题
print(driver.current_url)网址
print(driver.page_source)源码
driver.close 关闭当前焦点所在的浏览器窗口 比如你从a 新打开一个 会关闭a
driver.quit 退出或者关闭浏览器会话 只关闭你打卡的
driver.maximize_window() 最大化浏览器窗口
driver.get_screenshot_as_file('./ces.png') 截图到本地文件
标签的简介?html基础
html <input id="a" name="b"> xxx</input>
对应的字段
这个叫标签名称也叫元素类型 常用的是tag
这个尖括号里面和外面叫一个对象
文本值 text
属性 id 属性 唯一 name属性(提交给服务器的名称,一般不重复)
class 元素分类样式
元素有上下级关系
常见页面定位方式?????怎么分析?给你一个按钮
1.如果有id 先用id,不重复 现在会有id随时更新的
2.name 并不是所有name都有,如果你操作的在表单里from
3.class 重复性比较高
4.如果你操作是个链接 link <a></a> 可以用链接里的文本text 前提是a标签
5.上下级关系复杂定位 定位语句(xpath css选择器)
常见的元素类型????????????????????
1.input 叫输入域,根据输入域的type不同 长的不一样
2.button 按钮
3.select 下拉列表
4.ul 列表有小黑点
5.a 超链接
6.image 图片
7.table 表格
8.from 表单
9.div 块级标签 块元素 页面布局
10.文本-显示段落 span 短文本
实战模拟注册的????????只能称之为操作步骤还没有验证加断言?????
import time
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://8.141.52.231/shop/')
time.sleep(2)
driver.find_element_by_link_text('注册').click()
time.sleep(2)
driver.find_element_by_id('email').send_keys('964066768@qq.com')
driver.find_element_by_name('password').send_keys('123456')
driver.find_element_by_name('repassword').send_keys('123456')
driver.find_element_by_id('verifyCode').send_keys('1111')
time.sleep(2)
driver.find_element_by_id('readme').click()
driver.find_element_by_class_name('btn').click()
driver.close()
还有一个clrear清空方法
隐藏域?????????
取值类的操作,获取值的操作??????目的拿值做验证
1.获取文本值 driver.find_element_by_id('readme').text
2.获取属性值 driver.find_element_by_class_name('baidu').get_attribute('href')
实战
#取输入框的内容 先看怎么定位
print(driver.find_element_by_name('info').text)
#取链接值 先看怎么定位的看看你取链接值的对应
print(driver.find_element_by_class_name('baidu').get_attribute('href'))
print(driver.find_element_by_class_name('jd').get_attribute('href'))
如果你想打开一个新窗口覆盖旧的窗口,不想开多个窗口,怎么防止新窗口不弹出???
link=driver.find_element_by_class_name('baidu').get_attribute('href')
driver.get(link)
time.sleep(2) 预期只打开新窗口,旧窗口自动关
如何判断图片的正常展示???????
1.图片要有链接
img元素存在 图片的来源请求可以通
下拉框的操作??????????????????????????? select
import time
from selenium.webdriver.support.select import Select
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('file:///G:/a-%E5%88%98%E6%B3%BD%E8%80%81%E5%B8%88%E8%A7%86%E9%A2%91/ui%E8%87%AA%E5%8A%A8%E5%8C%96/ui%E8%87%AA%E5%8A%A8%E5%8C%96/2021-08-01-ui%E7%AC%AC%E4%B8%80%E8%8A%82%E8%AF%BE%E7%9A%84%E7%BB%83%E4%B9%A0/demo%20(2).html')
elenent=driver.find_element_by_name('select')#通过一个name元素定位一个下拉列表对象传给el
select=Select(elenent)#创建对象
select.select_by_value('1')#最靠谱
time.sleep(2)
driver.maximize_window()
select.select_by_value('2')#最靠谱
# 循环选择下拉框所有内容
for i in range(0,len(select.options)):
select.select_by_index(i)
time.sleep(2)
连续动作的操作????点击类
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('file:///G:/a-%E5%88%98%E6%B3%BD%E8%80%81%E5%B8%88%E8%A7%86%E9%A2%91/ui%E8%87%AA%E5%8A%A8%E5%8C%96/ui%E8%87%AA%E5%8A%A8%E5%8C%96/2021-08-01-ui%E7%AC%AC%E4%B8%80%E8%8A%82%E8%AF%BE%E7%9A%84%E7%BB%83%E4%B9%A0/demo%20(2).html')
driver.execute_script('window.scrollTo(0,1000)')#滚动屏幕
ac=ActionChains(driver)
#拖动鼠标到某个按钮
ac.move_to_element(driver.find_element_by_class_name("over"))#焦点移动到那个元素,这里要在页面自己定位
ac.perform()#动作回放表
双击操作??????????
import time
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('file:///G:/a-%E5%88%98%E6%B3%BD%E8%80%81%E5%B8%88%E8%A7%86%E9%A2%91/ui%E8%87%AA%E5%8A%A8%E5%8C%96/ui%E8%87%AA%E5%8A%A8%E5%8C%96/demo.html')
time.sleep(2)
driver.execute_script('window.scrollTo(0,1000)')#滚动屏幕 自动滚屏如果不够把1000写大点
ac=ActionChains(driver)
ac.move_to_element(driver.find_element_by_class_name("over"))#焦点移动到那个元素
ac.perform()#动作回放表演
time.sleep(2)
ac.double_click(driver.find_element_by_class_name('double'))#双击
ac.perform()#动作回放表演
拖拽的操作????????????????????????
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
ac=ActionChains(driver)
driver.get('file:///G:/a-%E5%88%98%E6%B3%BD%E8%80%81%E5%B8%88%E8%A7%86%E9%A2%91/ui%E8%87%AA%E5%8A%A8%E5%8C%96/ui%E8%87%AA%E5%8A%A8%E5%8C%96/2021-08-01-ui%E7%AC%AC%E4%B8%80%E8%8A%82%E8%AF%BE%E7%9A%84%E7%BB%83%E4%B9%A0/demo%20(2).html')
driver.execute_script('window.scrollTo(0,1000)')
ac.drag_and_drop(driver.find_element_by_xpath("//div[@id='slider']/span"),
driver.find_element_by_id("slider_confirm"))
ac.perform()