Selenium

https://www.cnblogs.com/alex3714/articles/5760582.html 24种设计模式

一、认识selenium

1.selenium 基于ui的自动化测试 webdriver api
大赛指定的是chrome65 selenium==2.48.0 python3.5

二、开始使用

鼠标操作

(from selenium.webdriver.common.action_chains import ActionChains)

在做自动化测试的时候,经常会遇到这种情况,某个页面元素,你必须要把鼠标移动到上面才能显示出元素。那么这种情况,我们怎么处理呢?,selenium 给我们提供了一个类来处理这类事件 —— ActionChains

ActionChains 可以对需要模拟鼠标操作才能进行的情况,比如 单击、双击、点击鼠标右键、拖拽 等等进行操作。

ActionChains方法列表:

click(on_element=None) ——单击鼠标左键

click_and_hold(on_element=None) ——点击鼠标左键,不松开

context_click(on_element=None) ——点击鼠标右键

double_click(on_element=None) ——双击鼠标左键

drag_and_drop(source, target) ——拖拽到某个元素然后松开

drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开

key_down(value, element=None) ——按下某个键盘上的键

key_up(value, element=None) ——松开某个键

move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标

move_to_element(to_element) ——鼠标移动到某个元素

move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置

perform() ——执行链中的所有动作

release(on_element=None) ——在某个元素位置松开鼠标左键

send_keys(*keys_to_send) ——发送某个键到当前焦点的元素

send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素

键盘事件( )

1. sleep(second) :强制等待,封装在time中的sleep类中

2. WebDricerWait(driver,timeout,poll_frequency,ignored_exceptions) 

显式等待,当找到要校验的元素后就继续执行下面的程序,非强制等待

driver:浏览器驱动

timeout:最长超时,秒为单位

poll_frequency:检测间隔(步长)时间,默认为0.5s

ignored_exceptions:超时后的异常信息,默认情况下抛出 NoSuchElementException

implicicitly(second)隐式等待,设置最长等待时长,如果在特定时间内未找到元素则抛出    NoSuchElementException异常
   
from selenium.common.exceptions import NoSuchElementException 
   
driver = webdriver.Firefox() 
   
driver.implicitly_wait(10)  #webdriverapi中的

submit()

driver.find_element_by_css_selector(“input.logging”).submit()  # 用于对信息进行提交,

也可以使用click()进行代替,submit()要求提交对象是一个表单,click( ) 更强调事件的独立性

下拉框

两种方法任选其一,都是指向同一个文件

from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.select import Select

实例化一个Select类的对象

selector = Select(driver.find_element_by_id("selectdemo"))

下面三种方法用于选择"篮球运动员"

selector.select_by_index("2")  # 通过index进行选择,index从0开始

selector.select_by_value("210103")  # 通过value属性值进行选择

selector.select_by_visible_text("篮球运动员")  # 通过标签显示的text进行选择

滚动条

js=“var q=document.documentElement.scrollTop=10000”
driver.execute_script(js)

窗口切换

第一种方法:
使用场景:
打开多个窗口,需要定位到新打开的窗口

使用方法:

#获取打开的多个窗口句柄
windows=driver.window_handles

#切换到当前最新打开的窗口
driver.switch_to(windows[-1])

重点 自动截图 :driver.save_screenshot(r’photo.png’)


查看谷歌浏览器的版本,后续下载相应版本的驱动器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将下载好的谷歌驱动 .exe文件拖拽到所建工程文件夹中
在这里插入图片描述

代码:

滑动

#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Time    : 2019/8/26 10:20
# @Author  : Fan
# @File    : se_demo.py
# @Software: PyCharm

from  selenium import webdriver
from selenium.webdriver.common.keys import Keys #
from selenium.webdriver.common.action_chains import ActionChains

import time
driver=webdriver.Chrome("chromedriver.exe")
driver.maximize_window()
driver.get("https://pages.kaola.com/pages/activity/kaola123.shtml?tag=cf5274c0ff456df92e385fabd1c58301&__da_Vu0MCs_OVtqR9&fc=u1.c6897.g6898.k1445920816175.pz")
driver.find_element_by_xpath('//*[@id="topSearchInput"]').send_keys("BB霜")
action_enter=ActionChains(driver)
action_enter.send_keys(Keys.ENTER).perform()
a=0
for i in range(1,11):
js="var q=document.documentElement.scrollTop={}".format(a)
a+=800
driver.execute_script(js)
time.sleep(1.5)

#driver.find_element_by_link_text('珂莱欧').click()
result=driver.find_elements_by_xpath('//*[@id="result"]/li/div/a/div/img')
for i in result:
print(i.get_attribute("src"))
driver.quit()

翻页

from selenium import webdriver  #这是准备浏览器驱动
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time

driver = webdriver.Chrome(executable_path="chromedriver.exe")
driver.maximize_window()
driver.get("https://www.kaola.com/")
driver.find_element_by_xpath('//*[@id="topSearchInput"]').send_keys("BB霜")
action_enter = ActionChains(driver)
action_enter.send_keys(Keys.ENTER).perform()

#driver.find_element_by_link_text("珂莱欧").click()
def func():
top_a = 0 #顶部滑动,初始高度0
for i in range(1,11):
    js = "var q=document.documentElement.scrollTop=%d" % top_a
    top_a +=800
    driver.execute_script(js)
    time.sleep(1.5)
results = driver.find_elements_by_xpath('//*[@id="result"]/li/div/a/div/img')
for i in results:
   print(i.get_attribute("src"))

for i in range(5):
print("第%d" % i)
func()
time.sleep(3)
driver.find_element_by_xpath('//*[@id="resultwrap"]/div[3]/a[7]').click()

driver.quit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值