自动化测试
1.定位元素的方式
id,name,class name,link text,partial lin text,tag name,xpath,css selector
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 通过元素id(全局唯一)定位元素,然后对元素进行操作
# class name有可能不唯一,id全局唯一
# driver.find_element_by_id("kw").send_keys("杨舒予")
# driver.find_element_by_name("wd").send_keys("杨舒予")
# driver.find_element_by_class_name("s_ipt").send_keys("杨舒予")
# driver.find_element_by_id("su").click()
# link text定位
# driver.find_element_by_link_text("视频").click()
# partial_link_text部分内容
# driver.find_element_by_partial_link_text("视").click(
# tag name,不是唯一的
# driver.find_element_by_tag_name("input").send_keys("焦迈奇")
# driver.find_element_by_tag_name("input").click()
# xpath
# driver.find_element_by_xpath("//*[@id='kw']").send_keys("沈以诚")
# driver.find_element_by_xpath("//*[@id='su']").click()
#css selector
driver.find_element_by_css_selector("#kw").send_keys("花瓣")
driver.find_element_by_css_selector("#su").click()
time.sleep(8)
# 关闭驱动
driver.quit()
2.浏览器操作
2.1浏览器最大化
driver.maximize_window()
2.2浏览器高宽
driver.set_window_size(100,100)
2.3浏览器前进后退
driver.back()
driver.forward()
2.4浏览器滚动
js1 = "var q=document.documentElement.scrollTop=10000"
driver.execute_script(js1)
2.5键盘按键
#先导包
from selenium.webdriver.common.keys import Keys
2.6键盘组合键
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_id("kw").send_keys("杨舒予")
driver.find_element_by_id("su").submit()
time.sleep(3)
#全选
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
#剪贴
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
time.sleep(3)
driver.find_element_by_id("kw").send_keys("杨洋")
driver.find_element_by_id("su").submit()
time.sleep(5)
driver.quit()
2.7鼠标事件双击,右击
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_id("kw").send_keys("杨舒予")
driver.find_element_by_id("su").submit()
time.sleep(3)
#右击百度一下按钮
loacte=driver.find_element_by_id("su")
ActionChains(driver).context_click(loacte).perform()
time.sleep(3)
driver.find_element_by_id("kw").clear()
#双击百度一下按钮
driver.find_element_by_id("kw").send_keys("123")
btn=driver.find_element_by_id("su")
ActionChains(driver).double_click(btn).perform()
time.sleep(3)
driver.quit()
2.8定位一组元素
from selenium import webdriver
import time
import os
driver = webdriver.Chrome()
url = "file:///" + os.path.abspath("E:/路径/一.html")
driver.get(url)
time.sleep(3)
# driver.find_element_by_id("c1").click()
# driver.find_element_by_id("c2").click()
# driver.find_element_by_id("c3").click()
# driver.find_element_by_id("c4").click()
inputs=driver.find_elements_by_tag_name("input")
for input in inputs:
if input.get_attribute('type')=="checkbox":
input.click()
time.sleep(3)
driver.quit()
2.9多层框架的定位
from selenium import webdriver
import time
import os
driver = webdriver.Chrome()
url = "file:///" + os.path.abspath("E:/路径/frame.html")
driver.get(url)
driver.maximize_window()
driver.switch_to.frame("f1")
driver.find_element_by_link_text("click").click()
time.sleep(3)
time.sleep(3)
# driver.quit()
2.10层级定位
from selenium import webdriver
import time
import os
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Firefox()
url = "file:///" + os.path.abspath("E:/路径/level_locate.html")
driver.get(url)
driver.maximize_window()
time.sleep(3)
driver.find_element_by_link_text("Link1").click()
time.sleep(3)
btn=driver.find_element_by_link_text("Another action")
ActionChains(driver).move_to_element(btn).perform()
time.sleep(6)
driver.quit()
2.11下拉框处理
from selenium import webdriver
import time
import os
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
url = "file:///" + os.path.abspath("E:/啊大学学习/大三课程/上课笔记/测试/selenium2html/drop_down.html")
driver.get(url)
driver.maximize_window()
time.sleep(3)
#tag name
options=driver.find_elements_by_tag_name("option")
# for option in options:
# if option.get_attribute('value')=="10.69":
# option.click()
# #css selector
# driver.find_element_by_css_selector("#ShippingMethod > option:nth-child(3)").click()
#数组的方式定位
options[2].click()
time.sleep(6)
driver.quit()
2.12alert处理
from selenium import webdriver
import time
import os
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
url = "file:///" + os.path.abspath("E:/路径/alert.html")
driver.get(url)
driver.maximize_window()
time.sleep(3)
driver.find_element_by_id("tooltip").click()
time.sleep(3)
#获取弹出框
alert=driver.switch_to.alert
#关闭弹出框
alert.accept()
time.sleep(3)
driver.quit()
from selenium import webdriver
import time
import os
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
url = "file:///" + os.path.abspath("E:/路径/send.html")
driver.get(url)
driver.maximize_window()
time.sleep(3)
driver.find_element_by_tag_name("input").click()
time.sleep(3)
#获取弹出框
alert=driver.switch_to.alert
alert.send_keys("杨赛")
time.sleep(3)
#关闭弹出框
alert.accept()
time.sleep(3)
driver.quit()
2.13div定位
from selenium import webdriver
import time
import os
driver = webdriver.Chrome()
url = "file:///" + os.path.abspath("E:/路径/modal.html")
driver.get(url)
driver.maximize_window()
time.sleep(3)
driver.find_element_by_id("show_modal").click()
time.sleep(3)
driver.find_element_by_id("click").click()
time.sleep(3)
# 定位div
div=driver.find_element_by_class_name("modal-footer")
#在定位一族元素
buttons=div.find_elements_by_tag_name("button")
#点击close
buttons[0].click()
time.sleep(3)
driver.quit()
2.14上传文件
from selenium import webdriver
import time
import os
driver = webdriver.Chrome()
url = "file:///" + os.path.abspath("E:/路径/upload.html")
driver.get(url)
driver.maximize_window()
#上传文件
driver.find_element_by_tag_name("input").send_keys("E:\\路径\\1.png")
time.sleep(3)
driver.quit()