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

一、多标签窗口(不懂)


图片

from selenium import webdriver

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

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

#  定位到房屋出租元素






el = driver.find_element_by_link_text

('房屋出租')


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

print('点击之前的身份证列表是:',

driver.window_handles)


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


# 点击操作

el.click()


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

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

driver.window_handles)


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

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






二、表单框架

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


图片

# 导包
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('已经从表单中退出')



三、警告框


图片

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()



四、鼠标键盘框


图片


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()



























五、下拉框


图片

案例一:百度

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()


六、定位等待


图片

显式等待

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()








六、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()































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章