测试7--selenium2

  • 操作测试对象

click 点击对象

send_keys 在对象上模拟按键输入

clear 清除对象的内容

submit 提交,可以达到click的效果

text 用于获取元素的文本信息

例题:用火狐浏览器打开百度,并将其网页最大化,在搜索框中输入“任豪图片”,点击百度一下,再清除刚才输入的“任豪图片”,搜索框重新输入R1SE 进行搜索,百度一下提交,后退到百度首页,将其右下角的文字进行输出,关闭当前窗口

from selenium import webdriver
import time
driver=webdriver.FireFox()
driver.get("http://www.baidu.com/")
driver.find_element_by_css_selector("#kw").send_keys("任豪图片")
driver.find_element_by_css_selector("#su").click() 
time.sleep(6)
#清除对象的内容
driver.find_element_by_name("wd").clear()
time.sleep(3)
#重新搜索
driver.find_element_by_name("wd").send_keys("R1SE")
#submit 提交
driver.find_element_by_id("su").submit()
#后退到百度首页
driver.back()
#text
texts=driver.find_element_by_id("bottom_layer").text
print("text="+texts)
time.sleep(6)
driver.quit()
  • 添加等待

需要引入time包

import time

(1)固定等待

time.sleep() 必须要等待固定的时间  

(2)智能等待

implicity_wait()  直到等待的元素加载出来,就不等待,但最多等待设置的时间

from selenium import webdriver
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
time.sleep(6)
driver.find_element_by_id("kw").send_keys("周深")
driver.find_element_by_id("su").submit()
#固定等待
time.sleep(10)
#智能等待
driver.implicitly_wait(10)
#如果不加等待,则没有加载出东西 是因为页面还未加载出来,就去找百度百科,当然找不到
#driver.find_element_by_link_text("周深 - 百度百科").click()
  • 打印信息

(1)打印title

(2)打印url  打印相关所有信息

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
#time.sleep(6)

driver.find_element_by_id("kw").send_keys("任豪")
driver.find_element_by_id("su").submit()
driver.implicitly_wait(10)
time.sleep(5)
#打印信息
#打印title
title=driver.title;
print("title="+title)
#打印相关所有信息
url=driver.current_url
print("ur="+url)
time.sleep(6)
driver.quit()
  • 浏览器的操作

(1)最大化maximize_window()、最小化minimize_window()

(2)设置浏览器的高度、宽度 set_window_size(300,800)

(3)操作浏览器的前进forward()、后退back()

(4)控制浏览器的滚动条 execute.script()

from selenium import webdriver
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
time.sleep(6)
#设置浏览器的宽度 高度
driver.set_window_size(480,800)
time.sleep(6)
driver.quit()
#后退
driver.back()
ime.sleep(6)
#前进
driver.forward()
#控制浏览器滚动条
#底部
js="var q=document.documentElement.scrollTop=1000"
driver.execute_script(js)
time.sleep(10)
#顶部
js1="var q=document.documentElement.scrollTop=0"
driver.execute_script(js1)
time.sleep(10)
  • 键盘事件

需要引入Keys包

1.键盘按键用法

send_keys(Keys.TAB)#TAB 清除

send_keys(Keys.ENTER)#ENTER 回车

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
time.sleep(6)
# driver.find_element_by_id("account").send_keyse("admin")
#定位到下面的密码 相当于清空了密码框的默认提示信息,等同clear()
# driver.find_element_by_id("account").send_keys(Keys.TAB)
# time.sleep(6)
# driver.find_element_by_name("password").send_keys("090406Cyr")
#通过enter键来代替登录按钮
# driver.find_element_by_name("password").send_keys(Keys.ENTER)

2.键盘组合键用法

send_keys(Keys.CONTROL,'a') 全选

send_keys(Keys.CONTROL,'x')  剪切

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
time.sleep(6)
driver.find_element_by_id("kw").send_keys("任豪")
time.sleep(3)
#全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
time.sleep(3)
#剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
time.sleep(3)
#输入框重新输入内容,搜索
driver.find_element_by_id("kw").send_keys("R1SE")
driver.find_element_by_id("su").click()
time.sleep(6)
  • 鼠标事件

from selenium.webdriver.common.action_chains import ActionChains

context_click() 右击

double_click() 双击

drag_and_drop() 拖动

move_to_element() 移动

from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
time.sleep(6)
driver.find_element_by_id("kw").send_keys("任豪")
#定位 百度一下按钮
su1=driver.find_element_by_id("su")
#右击
ActionChains(driver).context_click(su1).perform()
#双击
time.sleep(6)
ActionChains(driver).double_click(su1).perform()
time.sleep(8)
#定位到原来的元素
title=driver.find_element_by_id("su")
targe=driver.find_element_by_link_text("任豪(中国内地男歌手、演员) - 百度百科")
#拖动
#ActionChains(driver).drag_and_drop(title,targe).perform()
#移动
#ActionChains(driver).move_to_element(targe).perform()
  • 定位一组元素

1.使用场景:(1)批量操作对象;(2)先获取一组对象然后在这组对象中过滤出需要具体定位的一些对象。

2.get_attribute:获取属性值

from selenium import webdriver
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
time.sleep(6)
file_path='file:///'+os.path.abspath("file:///F:/软件测试/selenium2html/checkbox.html")
driver.get(file_path)
driver.maximize_window()
time.sleep(3)
inputs=driver.find_element_by_tag_name("input")
for input in inputs:
    if input.get_attribute("type")=="checkbox":
        input.click()
        time.sleep(6)

driver.quit()
  • 多层架构/窗口定位

1.switch_to_frame(name_or_id_or_frame_element) 获取frame中嵌入的页面

2.switch_to_default_content() 从frame嵌入的页面里跳出来,跳回到最外面的原始页面

from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
time.sleep(6)
file_path='file:///'+os.path.abspath("file:///F:/软件测试/selenium2html/frame.html")
driver.get(file_path)
driver.implicitly_wait(30)
driver.switch_to_frame("f1")
driver.switch_to_frame("f2")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").submit()
time.sleep(10)

#跳转到默认页面
driver.switch_to_default_content()
driver.switch_to_frame("f1")
driver.find_element_by_link_text("click").click()
time.sleep()
driver.quit()
  • 层级定位
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
time.sleep(6)
file_path='file:///'+os.path.abspath("file:///F:/软件测试/selenium2html/level_locate.html")
driver.get(file_path)
#点击link1链接 弹出下拉框
driver.find_element_by_link_text("Link1").click()
time.sleep(6)
target=driver.find_element_by_link_text("Another action")
#鼠标事件 移动鼠标到目标元素
ActionChains(driver).move_to_element(target).perform()
  • 下拉框处理

一般元素我们只需要定位一次,但是下拉框里的内容需要进行两次定位,先定位到下拉框,再定位到下拉框里的选项

from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
time.sleep(6)
file_path='file:///'+os.path.abspath("file:///F:/软件测试/selenium2html/drop_down.html")
driver.get(file_path)
driver.maximize_window()
time.sleep(6)
#定位一组元素
options=driver.find_element_by_tag_name("option")
# for option in options:
#     if option.get_attribute("value")=="9.03":
#         option.click()
#或者利用数组的下标定位
options[3].click()
#用xpath定位 复制xpath
#driver.find_element_by_xpath("").click()
time.sleep(6)
driver.quit()
  • alert处理

alert提醒框  switch_to.alert()得到提醒框内的信息

from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
time.sleep(6)
#alter框 提醒框
file_path='file:///'+os.path.abspath("file:///F:/软件测试/selenium2html/alert.html")
driver.get(file_path)
driver.maximize_window()
driver.find_element_by_id("tooltip").click()
time.sleep(6)
#接收警告信息
alert=driver.switch_to.alert()
alert.accept()
#打印
print( "alert="+alert)
time.sleep(6)
driver.quit()
  • DIV对话框处理
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
driver=webdriver.Firefox()
driver.get("http://www.baidu.com/")
#最大化浏览器
driver.maximize_window()
time.sleep(6)
#点击主页的Click按钮
driver.find_element_by_id("show_modal").click()
time.sleep(10)
#点击clickme
div1=driver.find_element_by_class_name("modal-body")
div1.find_element_by_link_text("click me").click()
time.sleep(6)
driver.quit()
  • 上传文件操作

只要点击定位上传按钮,通过send_keys添加本地文本路径就可以

driver.find_element_by_name("file").send_keys("文件路径")

猜你喜欢

转载自blog.csdn.net/weixin_43807876/article/details/115145703