案列:打开百度浏览器,在浏览器中搜索bing,点击搜索,进入官网bing的搜索目录,在bing浏览器中搜索python,点击搜索,在查到的结果中找到python官网,进入。
经过以上流程,输出的自动化脚本修改后如下:
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
class Idedem(unittest.TestCase):
def setUp(self): # unittest开始
self.driver = webdriver.Firefox() # 定义驱动
self.driver.implicitly_wait(30) # 设置隐士等待
self.base_url = "https://www.baidu.com/" # 初始化url
self.verificationErrors = [] # 异常
self.accept_next_alert = True # 默认设置弹框为确定
self.switch_handle = self.switch_handle # 自定义切换句柄
def switch_handle(self):
"""切换句柄"""
driver = self.driver
headles = driver.window_handles
driver.switch_to.window(headles[-1])
def test_idedem(self):
"""自动化录制脚本流程"""
driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_id("kw").click() # 定位搜索框并点击
driver.find_element_by_id("kw").clear() # 清空
driver.find_element_by_id("kw").send_keys("bing") # 在搜索框输入bing
driver.find_element_by_id("su").click() # 点击百度一下
driver.find_element_by_xpath(".//*[@id='1']/h3/a[1]").click() # 定位bing搜索框并点击
self.switch_handle() # 切换句柄
driver.find_element_by_id("sb_form_q").clear() # 清空
driver.find_element_by_id("sb_form_q").send_keys("python") # 在搜索框输入python
driver.find_element_by_id("sb_form_go").click() # 点击发送
self.switch_handle() # 切换句柄
driver.find_element_by_link_text("Welcome to Python.org").click() # 选择python官网进入
print("执行成功")
def is_element_present(self, how, what):
""":param
how: 如何定位元素
what:定位元素的值是什么
"""
try:
self.driver.find_element(by=how, value=what)
except NoSuchElementException as e:
return False
return True
def is_alert_present(self):
"""弹框相关操作"""
try:
self.driver.switch_to.alert()
except NoAlertPresentException as e:
return False
return True
def close_alert_and_get_its_text(self):
"""弹框的确认与关闭选择"""
try:
alert = self.driver.switch_to.alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally:
self.accept_next_alert = True
def tearDown(self): # 结束
# self.driver.quit()
# self.assertEqual([], self.verificationErrors)
pass
if __name__ == "__main__":
unittest.main()