python+selenium 第二套学习

01视频:
更新pip版本,在cmd窗口敲击: python
-m pip install --upgrade pip
安装selenium命令:
pip install selenium
展示selenium版本:
pip show selenium
#coding=utf-8
#第一行的编码设置注意不要加入空格
from selenium import webdriver 
from time import sleep

driver = webdriver.Firefox()
driver.get('https://www.baidu.com/')
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
sleep(3)
driver.quit()
02视频:
#coding=utf-8
name = 'zhangsan'
age = 28

print (type(name))
print (name,age)

#打印  数据之间的连接
print('name',name,age,a)
print('name: %s,age: %d'%(name,age))

 

#数组
a = ['a',2,'asa','jian']
#增加数组值
a.append('word')
print(a)

#字典
z = {"key":"value","name":"zhansan","password":123}

#输出key值
for i in z.keys():
    print(i)

#输出value值
for i in z.values():
    print(i)

#输出key 和 value值
for k,v in z.items():
    print(k,v)

输出:
key value
password 123
name zhansan
#python的引包规则
#1、当前目录下去找
#2、python安装目录下Lib文件夹中找
#3、系统环境变量path中找
#4、对应包的目录下要有个 __init__.py文件

#引入sys,在环境变量中添加对于包的名称,再正常引包
import sys
sys.path.append('\tjabc')
from tjabc.tjadd import add
print(add(4,5))
输出:
9

 

#异常处理
try:
    f = open('hello.txt','r')# r 读 w 写 a 增加
except BaseException as e:
    print (e)

try:
    print ("a")
except Exception as bb:
    print(bb)
#当except 没有被执行时,将会执行else
else:
    print('无异常')

try:
    print (aa)
except Exception as ee:
    print (ee)
#报不报错,finally都会被执行
finally:
    print('都会执行')
b = 'tome'
#抛出自定义异常
if b != 'tom':
    raise NameError('b 不是 tom')
03视频

#coding=utf-8
def add(a=4,b=9):
    return a+b
#使用默认参数时
print(add())
#使用自定义的参数
print(add(4,5))

 

#类,函数,方法
#三种写法
#1、直接定义类名
class A:

#2、规范一点,加个括号,用于继承保留的括号,推荐用这种
class A():

#3、声明类是继承object的
class A(object):
class A():
    #初始化方法,调用类的时候会先执行这个初始化方法
    def __init__(self,a,b):
        #self. 就是自己的意思
        self.a = int(a)
        self.b = int(b)
    #类下面的是方法,通过def定义
    #self是类下面的方法的第一个参数,必须要显示出来,这是Python的规范
    def add(self):
        return self.a+self.b

v = A(8,10)
n = v.add()
print(n)

 

class A():
    #初始化方法,调用类的时候会先执行这个初始化方法
    def __init__(self,a,b):
        #self. 就是自己的意思
        self.a = int(a)
        self.b = int(b)
    #类下面的是方法,通过def定义
    #self是类下面的方法的第一个参数,必须要显示出来,这是Python的规范
    def add(self):
        return self.a+self.b

#B类继承A类,B类可以使用A类的方法
class B(A):
    def sub(self):
        return self.a - self.b

#如下可以看成是个测试,验证结果,需要测试的内容就写在if __name__ == '__main__'下面
#这样别的地方导包的时候就不会执行到如下测试的内容,如果测试的内容是写在外面的,
#测试的内容就会在导包时一起被执行
if __name__ == '__main__':
    v = B(15,10)
    #使用A类里面的方法
    s = v.add()
    #使用B类里面的方法
    n = v.sub()
    print(s,n)

 

try:
    print(aa)
#使用except,BaseException,所有异常类的基类,可以使用这两个参数去接收所有的异常
except BaseException as er:
    print(er)

 04视频:

 05视频:

#coding=utf-8
#size 获取元素的尺寸
#text 获取元素的文本,测试用例中的断言可以用到
#get_attribute(name) 获得属性值
#is_displayed() 断言该元素是否用户可见
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')

#获取百度输入框的size
a = driver.find_element_by_id('kw').size
print(a)

#获取百度页面底部备案信息
b = driver.find_element_by_id('cp').text
print(b)

#返回元素的属性值,可以是id,name,type或其他任意属性
#<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
c = driver.find_element_by_id('kw').get_attribute('name')
print(c)

#判断元素是否可见,返回结果为Ture或False
d = driver.find_element_by_id('kw').is_displayed()
print(d)
driver.quit()

 

#写自动化测试用例的时候,用来做断言(验证)
# url
# title
# text
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
#获取搜索前的title和URL
title1 = driver.title
print(title1)
urlone = driver.current_url
print(urlone)
#获取搜索后的title和URL
driver.find_element_by_id('kw').send_keys('selenium')
sleep(1)
driver.find_element_by_id('su').click()
title2 = driver.title
print(title2)
urltwo = driver.current_url
print(urltwo)
#断言
if title2 == 'selenium_百度搜索':
    print('test case pass')
else:
    print('test case error')
driver.quit()

 

#显示等待,针对某个元素等待
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()
driver.get('https://www.baidu.com/')
#等待5秒,每0.5秒检查一次,元素是否存在
element = WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,"kw")))
element.send_keys('selenium')
driver.quit()
#如在项目当中也可以这样写
from selenium import webdriver
driver= webdriver.Chrome()
driver.get('https://www.baidu.com/')
from time import ctime,sleep
print(ctime())
for i in range(0,10):
    try:
        element = driver.find_element_by_id('kw1')
        if element.is_displayed():#是否发现元素
            break
    except:
     pass sleep(
1) else: print('元素未发现') driver.close() print(ctime())

 

#隐式等待,针对当前页面当中的所有元素等待
from selenium import webdriver
from time import sleep

driver= webdriver.Chrome()
#隐式等待10秒
driver.implicitly_wait(10)
driver.get('https://www.baidu.com/')

driver.find_element_by_id('kw').send_keys('selenium')
sleep(2)
driver.quit()

   06视频:

#  切换表单
driver.switch_to_frame('kw') #可以是元素的id或name

#如下为通过xpath切换表单
xp = driver.find_element_by_xpath('//iframe[@id="if"]')
driver.switch_to_frame(xp)

#切换表单,如已经进入了多层的表单里面,需要退出到最外层的表单
driver.switch_to.default_content()

#返回上一级表单
driver.switch_to.parent_content()
#窗口切换
#获取当前窗口的句柄
windowsnow = driver.current_window_handle

#获取当前所有打开的窗口句柄
all_handles = driver.window_handles

#多窗口切换,只要获取窗口的句柄,就容易切换了,如下可遍历后进行窗口之间的切换
#也可切换窗口后,再获取当前页面的句柄,方便后面继续多窗口切换操作
for wind in all_handles:
    if wind != windowsnow:
        driver.switch_to_window(wind) #切换到wind 窗口
        ''''''

 

# 元素如果是灰色的,说明当前元素在界面中是不可见的,也是不可点击的
#需要进行一些操作,才能将元素显示出来
# 弹出型的警告窗口:用前端工具是定位不到的,可以使用swicth_to_alert()处理

# text  返回alert/confirm/prompt中的文字信息
# accept    点击确认按钮
# dismiss   点击取消按钮,如果有的话
# send_keys     输入值,这个alert/confirm没有对话框就不能用了,不然会报错

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('http://www.baidu.com')

#鼠标悬停至设置、
link = driver.find_element_by_link_text('设置')
ActionChains(driver).move_to_element(link).perform()

#打开搜索设置
driver.find_element_by_link_text('搜索设置').click()
time.sleep(2)
#保存设置
driver.find_element_by_class_name('prefpanelgo').click()
time.sleep(2)

#接受警告窗
driver.switch_to_alert().accept()
time.sleep(2)
driver.quit()

 

#文件上传
from
selenium import webdriver from time import sleep,ctime driver = webdriver.Chrome() driver.get('http://192.168.1.109:8090/') driver.maximize_window() driver.implicitly_wait(10) #登入系统 driver.find_element_by_id('username').send_keys('****') driver.find_element_by_id('password').send_keys('*****') driver.find_element_by_id('signin').click() sleep(2) driver.find_element_by_xpath('/html/body/div[5]/div[1]/div[2]/a').click() sleep(1) driver.find_element_by_id('d86cdf62-6438-4ff4-bc3a-88523f567333').click() driver.switch_to.frame('iframe-center') sleep(1) driver.find_element_by_id('btnImport').click() sleep(1) #定位上传按钮,添加本地文件
#send_keys实现上传文件
#如下为type="file" 即为上次文件的类型 #<input id="FileData" name="FileData" type="file" value="请选择文件"> driver.find_element_by_id('FileData').send_keys(r'E:\test01.xlsx')

 

# 调用exe程序
import os
# 调用upfile.exe程序
os.system('D:\\upfile.exe')

 07视频:

# 获得cookie信息
cookie = driver.get_cookies()
#返回字典的key为“name”的cookie信息
driver.get_cookie(name)
#添加cookie,为指定对象,必须有name和value值
driver.add_cookie({'name':'keyaaa','value':'valuebbb'})
#删除cookie信息
driver.delete_cookie()
#删除所有cookie信息
driver.delete_all_cookies()

driver.find_element_by_id('password').send_keys('123456') driver.find_element_by_id('signin').click() sleep(2) driver.find_element_by_xpath('/html/body/div[5]/div[1]/div[2]/a').click() sleep(1) # 获得cookie信息 cookie = driver.get_cookies() print(cookie) sleep(2)

打印cookies:

[{'value': '5B9920D103A9A51ED9C73962AD4D74F34740DAFCDC6CE40D39DB4A16B6B11D09172E67CC984AEEA0C38A05E8623A280DDB65AC62F34253974DE106076B1291ECB4CBA128CB30F485932203A933823BE202FFFB05E4F168AE24B7049C65ED1BB4', 'secure': False, 'path': '/', 'expiry': 1565081404.022075, 'name': 'JSST.AUTH', 'httpOnly': True, 'domain': '192.168.1.109'}, {'secure': False, 'path': '/', 'value': 'amze0jjwac0zhdhhihnd40u2', 'name': 'ASP.NET_SessionId', 'httpOnly': True, 'domain': '192.168.1.109'}]

 

# 截取当前窗口,并指定截图图片保存位置
driver.get_screenshot_as_file(r'E:\test\TJ01.jpg ')

08视频:

09视频: 

模块化

 


 10视频:

selenium IDE

 11视频:

unittest 

 

posted @ 2019-05-28 00:20  必秋秋  阅读(285)  评论(0)    收藏  举报