API高级

手动测试时键盘的操作在selenium页有实现,关于鼠标的操作由ActionChains()类来提供,关于键盘的操作由Key()类来提供

1)鼠标操作

导入动作链类,动作链可以储存鼠标的动作
from selenium.webdriver import ActionChains
获取元素
el = driver.find_element_by_xxx(value)
context_click(el) 对el执行右击
执行ActionChains中储存的所有动作
perform()

例如:ActionChains(driver).context_click(ele).perform() 点击鼠标右键
ActionChains(driver). double_click(ele).perform() 点击鼠标左键
ActionChains(driver).move_to_element(el).perform() 鼠标悬停

1)键盘操作
键盘操作使用的是Keys类,一般配合send_keys使用

	* 导入
	from selenium.webdriver.common.keys import Keys

	* 常用键盘操作
  				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)

1)键盘操作
* 常用键盘操作

  				send_keys(Keys.CONTROL,‘a’) 	全选(Ctrl+A)
  	 			send_keys(Keys.CONTROL,‘x’) 	剪切(Ctrl+X)
  	 			send_keys(Keys.CONTROL,‘v’) 	粘贴(Ctrl+V)
  	 			send_keys(Keys.F1) 						键盘 F1 			…… 			
  				send_keys(Keys.F12) 					键盘 F12

浏览器等待

  1. 为什么要进行等待?
    1.网速慢
    2.网站内容过多
    3.如果不进行等待而直接定位元素,可能会抛出异常

  2. selenium中等待的分类:
    强制等待
    显示等待
    隐式等待

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

鼠标和键盘操作

在这里插入图片描述
在这里插入图片描述

from selenium import webdriver
from selenium.webdriver importActionChains
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome(r"F:\liangzai\Chrome\Application\chromedriver.exe")
driver.get(“https://www.baidu.com”)
driver.maximize_window()
time.sleep(20) #强制等待20秒

‘’’#获取yuans
gd = driver.find_element_by_tag_name(‘tj_briicon’)
#左击鼠标,点击操作
ActionChains(driver).click(gd).perform()
#右击鼠标,点击操作
ActionChains(driver).context_click(gd).perform()
#悬浮,点击操作
ActionChains(driver).move_to_element(gd).perform() ‘’’

srk = driver.find_element_by_id(‘kw’)
#清空
srk.clear()
srk.send_keys(12306)
time.sleep(1)
#全选 剪切
srk.send_keys(Keys.CONTROL,‘a’)
srk.send_keys(Keys.CONTROL,‘x’)
time.sleep(2)
#粘贴
srk.send_keys(Keys.CONTROL,‘v’)

滚动条操作
在这里插入图片描述

from selenium import webdriver
import time
driver =webdriver.Chrome(r"F:\liangzai\Chrome\Application\chromedriver.exe")
driver.get(“https://bj.58.com”)
driver.maximize_window()
js=‘window.scrollTo(0,500)’
driver.execute_script(js)#向下拉五百
time.sleep(2)
js=‘window.scrollTo(0,0)’
driver.execute_script(js)#滚动到顶部
time.sleep(2)
js=‘window.scrollTo(0,10000)’
driver.execute_script(js)#滚动到底部
time.sleep(2)
cjwt =driver.find_element_by_xpath(’//*[text(0="常见问题)]’)
driver.execute_script(‘arguments[0].scrollIntoView();’,cjwt)
time.sleep(2)
cjwt.click()

弹窗操作

在这里插入图片描述

from selenium import webdriver
import time
driver =webdriver.Chrome(r"F:\liangzai\Chrome\Application\chromedriver.exe")
driver.get(“https://baidu.com”)
driver.maximize_window()
sz =driver.find_element_by_id(‘s-usersetting-top’)
sz.click()
sssz =driver.find_element_by_class_name(‘setpref’)
sssz.click()
sssz.sleep(1)
gb =driver.find_element_by_xpath(’//*[@id=“general”]/from/div/ul/li[4]/span[2]/span[2]/label’)
gb.click()
bcsz = driver.find_element_by_tag_name(‘prefpanelgo’)
bcsz.click()
#进入弹框,确定
driver.switch_to.alert.accept()

下拉框操作
在这里插入图片描述

from selenium import webdriver
import time
driver =webdriver.Chrome(r"F:\liangzai\Chrome\Application\chromedriver.exe")
driver.get(“https://baidu.com”)
driver.maximize_window()
sz =driver.find_element_by_id(‘s-usersetting-top’)
sz.click()
sssz =driver.find_element_by_class_name(‘setpref’)
sssz.click()
time.sleep(2)
gjss =driver.find_element_by_xpath(’//[@id=“wrapper”]/div[6]/div/div/ul/li[2]’)
gjss.click()
time.sleep(2)
xlk =driver.find_element_by_xpath(’//
[@id=“adv-setting-gpc”]/div/div[1]/i[1]’)
xlk.click()
time.sleep(2)

lists = driver.find_elements_by_class_name(‘c-select-item’)

lists[4].click() for list_name in lists:

if list_name.text == '最近一周':
    list_name.click()
    # print(list_name.text)

优化代码
在这里插入图片描述
在这里插入图片描述

from selenium import webdriver
import time
import unittest
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
import time
class DBQclass(unittest.TestCase):
@classmethod
def setUp(cls) -> None:
cls.driver = webdriver.Chrome(r’F:\liangzai\Chrome\Application\chromedriver.exe’)
cls.driver.implicitly_wait(30) # 隐式等待30秒
# 58同城首页操作
def test001(self):
driver = self.driver
# 访问58
driver.get(‘https://bj.58.com’)
# 点击租房
driver.find_element_by_xpath(’//*[@id=“fcNav”]/em/a[1]’).click()
# 跳转窗口
driver.switch_to.window(self.driver.window_handles)
# print(driver.title)
# 断言操作
# self.assertEqual(‘北京出租房价格信息|房价租金|北京房产网’)
self.assertEqual(‘北京出租房价格信息’, driver.title)
def test002(self):
driver = self.driver
# 点击地区
driver.find_element_by_xpath(’/html/body/div[5]/div[2]/div[2]/dl[1]/dd/a[4]’).click()
# 区域
driver.find_element_by_xpath(’/html/body/div[5]/div[2]/div[2]/dl[1]/dd/div/a[3]’).click()
# 价钱
driver.find_element_by_xpath()
# 定位区域断言
qy = driver.find_element_by_id(‘tab=default’).text
self.assertEqual(‘县城出租房’, qy)

@classmethod
def tearDownClass(cls) -> None:
    time.sleep(2)
    cls.driver.quit()

if __name__ == '__main__':
    unittest.main()

练习
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
import os
import pytest
class TestHtmlTB():
@classmethod
def setup_class(cls):
# 启动谷歌浏览器
cls.webs = webdriver.Chrome(r’E:\uiZidonghua\testsele\Chrome\Application\chromedriver.exe’)
cls.webs.implicitly_wait(30)
cls.webs.maximize_window()
def test001(self):
webs=self.webs
webs.get(‘http://www.baidu.com’)
ss = webs.find_element_by_id(‘kw’)
ss.clear()
ss.send_keys(“淘宝网”)
webs.find_element_by_id(‘su’).click()
webs.find_element_by_xpath(’//[@id=“1”]/h3/a[1]’).click()
print(webs.find_element_by_xpath(’//
[@id=“1”]/h3/a[1]’).text)
#断言
assert webs.find_element_by_xpath(’//[@id=“1”]/h3/a[1]’).text==“淘宝网 - 淘!我喜欢”
def test002(self):
web=self.webs
web.switch_to.window(web.window_handles[1])
web.find_element_by_xpath(’//
[@id=“J_SiteNavLogin”]/div[1]/div[1]/a[1]’).click()
web.find_element_by_xpath(’//[@id=“login”]/div[1]/i’).click()
print(web.title)
#断言
assert web.title==“淘宝网 - 淘!我喜欢”
# assert web.find_element_by_xpath(’//
[@id=“header”]/div/h1/a’)“淘宝网”
def test003(self):
web=self.webs
web.find_element_by_xpath(’//[@id=“q”]’).send_keys(“电脑”)
web.find_element_by_xpath(’//
[@id=“J_TSearchForm”]/div[1]/button’).click()
el = web.find_element_by_xpath(’//[@id=“mainsrp-nav”]/div/div[2]/div/div[5]/div[2]/div/span[1]’)
ActionChains(web).move_to_element(el).perform()
# web.find_element_by_xpath(’//
[@id=“mainsrp-nav”]/div/div[2]/div/div[5]/div[2]/div/span[1]’).click()
web.find_element_by_xpath(’//[@id=“mainsrp-nav”]/div/div[2]/div/div[5]/div[3]/div/a[10]’).click()
time.sleep(2)
ele=web.find_element_by_xpath(’//
[@id=“J_relative”]/div[1]/div/div[1]/div[1]/div/ul/li[1]/input’)
ActionChains(web).move_to_element(ele).perform()
web.find_element_by_xpath(’//[@id=“J_relative”]/div[1]/div/div[1]/div[1]/div/ul/li[1]/input’).send_keys(“2000”)
web.find_element_by_xpath(’//
[@id=“J_relative”]/div[1]/div/div[1]/div[1]/div/ul/li[3]/input’).send_keys(“10000”)
web.find_element_by_xpath(’//[@id=“J_relative”]/div[1]/div/div[1]/div[1]/div/ul/li[4]/button’).click()
print(“2222222222”)
time.sleep(1)
web.find_element_by_xpath(’//
[@id=“J_Itemlist_Pic_649022165593”]’).click()
#断言
print(web.find_element_by_xpath(’//[@id=“tabFilterAll”]’).text)
assert web.find_element_by_xpath(’//
[@id=“tabFilterAll”]’).text
"所有宝贝"
def test004(self):
web=self.webs
web.switch_to.window(web.window_handles[2])
web.find_element_by_xpath(’//[@id=“J_juValid”]/div[2]/a’).click()
#16g
# web.find_element_by_xpath(’//
[@id=“J_isku”]/div/dl[1]/dd/ul/li/a’).click()
#硬盘容量
web.find_element_by_xpath(’//[@id=“J_isku”]/div/dl[2]/dd/ul/li[2]/a’).click()
#颜色分类
web.find_element_by_xpath(’//
[@id=“J_isku”]/div/dl[3]/dd/ul/li[6]/a/span’).click()
#加入购物车
web.find_element_by_xpath(’//*[@id=“J_SureContinue”]’).click()
#断言
print(web.title)
assert web.title==“加入购物车成功”
if name == ‘main’:
pytest.main([’–alluredir’, ‘report/result’, ‘TestAlert.py’])
split = 'allure ’ + 'generate ’ + './report/result ’ + '-o ’ + './report/html ’ + ‘–clean’
os.system(split)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值