【②-c】—自动化测试:高级selenium—API 及Selenium封装

1、多标签窗口(不懂)css


图片

from selenium import webdriver

# 开浏览器
driver = webdriver.Firefox()

# 访问北京58
url = 'http://bj.58.com/'
driver.get(url)

#  定位到房屋出租元素

el = driver.find_element_by_link_texthtml

('房屋出租')web


# 打印当前的浏览器句柄(浏览器的身份证列表)

print('点击以前的身份证列表是:',浏览器

driver.window_handles)cookie


print('点击前的url:',driver.current_url)框架


# 点击操做

el.click()ide


# 打印当前的浏览器句柄(浏览器的身份证列表)

print('点击以后的身份证列表是:',ui

driver.window_handles)url


print('点击后的url:',driver.current_url)
print('当前标题:',driver.title)

# 进入第二个窗口
# 保存句柄列表
handle_list = driver.window_handles
# 同句柄(身份证)索引进入相关的窗口
driver.switch_to.window(handle_list[1])
print('切换以后的标题:',driver.title)



2、表单框架spa

(一)进入表单(似懂非懂)


图片

# 导包
from selenium import webdriver
import time
# 建立浏览器
driver = webdriver.Firefox()
# 访问126
url = 'http://126.com/'
driver.get(url)
# 防止加载太快
time.sleep(5)

# 定位到表单

# el_frame = driver.find_element

_by_css_selector('#x-URS-iframe')

# 切换进入表单中

# driver.switch_to.frame(el_frame)

# 经过id进入

driver.switch_to.frame('x-URS-iframe')
# 在表单中定位帐号输入框

el_user = driver.find_element_by_name

('email')


# 输入帐号
el_user.send_keys('itcast_soft_test')

# 定位密码输入框标签

el_pwd = driver.find_element_by_name

('password')


# 输入密码
el_pwd.send_keys('1qaz2wsx#EDC')

# 定位登录按钮
el_sub = driver.find_element_by_id('dologin')
# 点击登陆
el_sub.click()

time.sleep(5)
driver.close()


(二)退出表单


图片


案例:本地加载-多表单切换

图片

# 导入os库,用于获取文件路径
import os
import time
# 建立浏览器

driver =  webdriver.Firefox()


# 获取网页访问路径,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.default_content()
try:

el_search = driver.find_element_by_id

('sb_form') except:
   print('已经从表单中退出')



3、警告框


图片

from selenium import webdriver
import time
# 建立一个浏览器
driver = webdriver.Firefox()

# 访问百度
url = 'http://www.baidu.com'
driver.get(url)
# 定位到设置
el = driver.find_element_by_link_text('设置')
el.click()
# 定位搜索设置,并点击

el_set = driver.find_element_by_css_

selector('.setpref')


el_set.click()

# 定位保存设置按钮

el_save = driver.find_element_by_css_

selector('.prefpanelgo')


el_save.click()
time.sleep(2)
# 进入警告框中,而且点击接受

#driver.switch_to.alert.accept()

# 进入警告框,而且解散警告框

driver.switch_to.alert.dismiss()
time.sleep(5)
driver.quit()



4、鼠标键盘框


图片


from selenium import webdriver
#  导入动做链类
from selenium.webdriver import ActionChains

# 开浏览器
driver = webdriver.Firefox()

# 访问百度
url = 'http://www.baidu.com'
driver.get(url)

# 定位到logo元素

el_logo = driver.find_element_by

_css_selector('#lg > map:nth-child(2)

> area:nth-child(1)')


# 鼠标右操做,操做元素前,须要将操做的元素定位

出来而且穿入相应的动做中,若是要执行操做,须要调

perform()


ActionChains(driver).context_click(el_logo)

.perform()


from selenium import webdriver
# 导入动做链类
from selenium.webdriver import ActionChains
import time

# 开浏览器
driver = webdriver.Firefox()

# 访问头条

url = 'https://www.toutiao.com/ch/news

_society/'

driver.get(url)

# 定位到须要双击操做的元素

el = driver.find_element_by_css_selector

('.wchannel > ul:nth-child(2) >

li:nth-child(2) > a:nth-child(1)

> span:nth-child(1)')


# 双击定位到的元素,进行切换

ActionChains(driver).double_click(el).

perform()


time.sleep(5)
driver.quit()


from selenium import webdriver
# 导入动做链类
from selenium.webdriver import ActionChains
import time
# 开一个浏览器
driver = webdriver.Firefox()
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()


图片


from selenium import webdriver
# 导入Key类,key类中包含不少键盘按钮操做

from selenium.webdriver.common.keys import

Keys


import time
# 打开浏览器
driver = webdriver.Firefox()

# 访问必应搜索
url= 'http://cn.bing.com/'
driver.get(url)

# 定位到输入框
el = driver.find_element_by_id('sb_form_q')
# 输入关键字
el.send_keys('selenium')
time.sleep(1)
el.send_keys(Keys.CONTROL,'a')
time.sleep(1)
# 执行剪切操做
el.send_keys(Keys.CONTROL,'x')
time.sleep(1)
# 执行粘贴操做
el.send_keys(Keys.CONTROL,'v')
time.sleep(1)
# 清空操做
el.clear()
#输入 单词
el.send_keys('seleniumn')
time.sleep(1)
# 退格删除
el.send_keys(Keys.BACK_SPACE)

time.sleep(5)
driver.quit()


5、下拉框


图片

案例一:百度

from selenium import webdriver
# 导入Select

from selenium.webdriver.support.select

import Select


import time

# 建立一个浏览器
driver = webdriver.Firefox()

# 访问百度
url = 'http://www.baidu.com'
driver.get(url)

# 定位到设置元素而且点击

el = driver.find_element_by_link_text

('设置')


el.click()

# 定位搜索设置,而且点击

el_set = driver.find_element_by_

css_selector('.setpref')


el_set.click()

# 定位到下拉框元素
el_select = driver.find_element_by_id( 'nr' )
# 建立下拉框对象
selobj = Select(el_select)

# 经过选项的索引进行设置
# selobj.select_by_index(0)

# time.sleep(1)
#
selobj.select_by_index(1)
# time.sleep(1)

# selobj.select_by_index(2)



# 经过value进行设置
# 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_by_visible_text

('每页显示50')


# time.sleep(1)

# selobj.select_by_visible_tex

t('每页显示10')


# time.sleep(1)

# selobj.select_by_visible_text

('每页显示20')


# time.sleep(1)
#
打印对一个选择的选项
print ( selobj.first_selected_option.text )


案例二:hao123

from selenium import webdriver
import time
# 建立浏览器
driver = webdriver.Firefox()

# 访问好123
url = 'https://www.hao123.com/'
driver.get(url)

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.execute_script(js1)
driver.quit()


6、定位等待


图片

显式等待

from selenium import webdriver
import time
# 建立浏览器
driver = webdriver.Firefox()

# 访问好123
url = 'https://www.hao123.com/'
driver.get(url)

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.execute_script(js1)
driver.quit()


隐式等待

from selenium import webdriver

# 建立浏览器
driver = webdriver.Firefox()

url = 'https://www.amazon.cn/'
driver.get(url)
driver.implicitly_wait(20)

driver.close()


6、cookies

图片


from selenium import webdriver

# 建立浏览器
driver = webdriver.Firefox()

# 访问有道
url = 'http://www.youdao.com/'
driver.get(url)

# 获取cookies,直接调用,不须要参数
data = driver.get_cookies()
print(data)

# 删除全部cookies
driver.delete_all_cookies()

# 设置cookies

cookie = {"name":"itcast","value":"soft_test"}

driver.add_cookie(cookie)

# 获取
data1 = driver.get_cookies()
print(data1)



——Selenium封装——

(不懂)


图片

from selenium import webdriver
import time
class Common(object):
   # 初始化
   def __init__(self):
       # 建立浏览器
       self.driver = webdriver.Firefox()
       # 浏览器最大化
       self.driver.maximize_window()

   # 访问指定url
   
def open_url(self, url):
       self.driver.get(url)
       self.driver.implicitly_wait(10)

   def close_driver(self):
       self.driver.quit()

   # 结束的时候清理了
   def __del__(self):
       time.sleep(3)
       self.driver.quit()

if __name__ == '__main__':
   com = Common()
   com.open_url('http://www.baidu.com')
   com.open_url('http://www.hao123.com')    com.close_driver()
相关文章
相关标签/搜索