selenium 的web测试。0810

1、表单/框架操作

driver.switch_to.default_content() 退出到最外层
driver.switch_to.parent_frame() 退出到父层

from selenium import webdriver
# 导入os库,用于获取文件路径
import os
import time
# 创建浏览器
driver =  webdriver.Chrome()
# 获取网页访问路径,os.path.abspath(文件名)获取文件的绝对路径
file_path = 'file:///'+os.path.abspath('example_frame.html')
print(file_path)
# #访问本地文件
driver.get(file_path)
time.sleep(5)
# #切换到第一个表单中 外面
driver.switch_to.frame('itcast_frame1')
# # 切换到第二层表单  里面
driver.switch_to.frame('itcast_frame2')
# # 定位到输入框
el = driver.find_element_by_id('sb_form_q')
# #输入
# el.send_keys('selenium')
# # 定位点击按钮
el_sub = driver.find_element_by_id('sb_form_go')
el_sub.click()
#
# # 定位一个元素,验证已经到达深层表单
el_search = driver.find_element_by_id('sb_form')
# print('依然在最深层表单中')
#
# #跳回到最外层的页面    driver.switch_to.parent_frame  跳回到上层页面
driver.switch_to.default_content()
# #验证已跳回到最外层
try:
    el_search = driver.find_element_by_id('sb_form')
except:
    print('已经从表单中退出')

2、鼠标键盘操作

1、鼠标:ActionChains
from selenium import webdriver
from selenium.webdriver import ActionChains

driver=webdriver.Chrome()
url='http://baidu.com'
driver.get(url)
#定位到logo
# e1_logo=driver.find_elements_by_css_selector('#lg > map > area')
e1_logo=driver.find_elements_by_id('kw')
## 鼠标右击操作,操作元素前,需要将操作的元素定位出来并且穿入相应的动作中,如果要执行操作,需要调用perform()
 
ActionChains(driver).context_click(e1_logo).perform()
 
#双击定位到的元素,进行切换
#ActionChains(driver).double_click(el_logo).perform()

from selenium import webdriver
# 导入动作链类
from selenium.webdriver import ActionChains
import time
# 开一个浏览器
driver = webdriver.Chrome()
driver.maximize_window()
# 访问京东
url = 'http://www.jd.com'
driver.get(url)
 
# 获取分类组元素(列表元素)
el_list = driver.find_elements_by_class_name('cate_menu_item')
 
for el in el_list:
    #鼠标移动
    ActionChains(driver).move_to_element(el).perform()
    time.sleep(1)
driver.quit()

2、键盘操作

send_keys(Keys.BACK.SPACE) 删除键(BackSpace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) 制表键(Tab)
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(enter)
send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)
send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
send_keys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)
send_keys(Keys.F1) 键盘F1

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver=webdriver.Chrome()
url='http://cn.bing.com'
driver.get(url)
e1=driver.find_element_by_id('sb_form_q')
e1.send_keys('selenium')
time.sleep(1)
e1.send_keys(Keys.CONTROL,'a')
time.sleep(1)
e1.send_keys(Keys.CONTROL,'x')
time.sleep(1)
e1.send_keys(Keys.CONTROL,'v')
time.sleep(1)
e1.clear()
e1.send_keys('python')
time.sleep(1)
e1.send_keys(Keys.BACK_SPACE)
time.sleep(5)
driver.quit()

3、警告框操作

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
 
driver=webdriver.Chrome()
url='http://baidu.com'
driver.get(url)
 
a1=driver.find_element_by_link_text('设置')
a1.click()
b1=driver.find_element_by_css_selector('#wrapper > div.bdpfmenu > a.setpref')
b1.click()
c1=driver.find_element_by_css_selector('#gxszButton > a.prefpanelgo')
c1.click()
接受弹出框
driver.switch_to.alert.accept()
拒绝弹出框
driver.switch_to.alert.dismiss()

4、下拉框操作

将定位到的下拉框元素传入Select类
selobj=Select(element) 下拉框元素已定位到
调用响应方法选择下拉框的选项 select_by_index,select_by_value,select_by_visible_text

#all_selected_options      查看所有已选
#first_selected_options   第一个选择的选项
#is_multiple       查看是否多选
selobj=Select(d1)
#print(selobj.first_selected_option)
print(selobj.first_selected_option.text)
#print(dir(selobj.first_selected_option))
#print(selobj.first_selected_option.text)
from selenium import webdriver
from selenium.webdriver.support.select import Select
import time
driver=webdriver.Chrome()
url='http://www.baidu.com'
driver.get(url)
 
a1=driver.find_element_by_link_text('设置')
a1.click()
b1=driver.find_element_by_class_name('setpref')
b1.click()
# c1=driver.find_element_by_css_selector('#gxszButton > a.prefpanelgo')
# c1.click()
#定位到下拉框元素
d1=driver.find_element_by_name('NR')
#创建下拉框对象
# selobj=Select(d1)
# selobj.select_by_index(0)
# time.sleep(1)
# selobj.select_by_index(1)
# time.sleep(1)
# selobj.select_by_index(2)
# time.sleep(1)
 
 
# selobj=Select(d1)
# selobj.select_by_value('50')
# time.sleep(1)
# selobj.select_by_value('20')
# time.sleep(1)
# selobj.select_by_value('10')
# time.sleep(1)
 
 
# selobj=Select(d1)
# selobj.select_by_visible_text('每页显示50条')
# time.sleep(1)
# selobj.select_by_visible_text('每页显示20条')
# time.sleep(1)
# selobj.select_by_visible_text('每页显示10条')
# time.sleep(1)

5、执行js

selenium没有操作滚动条的方法,需要用到js语言

from selenium import webdriver
import time
# 创建浏览器
driver = webdriver.Chrome()
# 访问好123
url = 'https://www.hao123.com'
driver.get(url)
# js='window.scrollTo(x,1000)'
# driver.execute_script(js)
for i in range(100):
    # 往下滚,x管水平,y管垂直
    js = 'window.scrollTo(0,%s)'%(i*100)
    driver.execute_script(js)
    time.sleep(0.5)
    #往上滚
    js1= "var q=document.documentElement.scrollTop=0"
    driver.execute_script(js1)
    
# driver.quit()

6、页面等待

显示等待:根据条件进行等待,等待条件出现
隐式等待:根据条件进行等待,等待特定的时间

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver=webdriver.Chrome()
url='http://www.baidu.com'
driver.get(url)
#显示等待
WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located((By.ID,'lg'))) #只能放一个参数,需用()
#隐式等待
driver.implicitly_wait(20)

7、cookie操作

cookie:某些网站辨别用户身份,进行会话保持储存在用户本地终端的数据 。

使用cookie原因:因为http是无状态协议,不对之前的访问状态做管理,没有状态管理就不能保持登录状态。

cookie 类型:列表里面有很多字典数据

from selenium import webdriver
driver=webdriver.Chrome()
url='http://www.youdao.com'
driver.get(url)
#获取cookie
data=driver.get_cookies()
print(data)
#删除所有cookies
driver.delete_all_cookies()
#设置cookie
cookie={'name':'itcasse','value':'testtttt'}
driver.add_cookie(cookie)
data1=driver.get_cookies()
print(data1)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值