selenium自动化测试工具补充

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37886429/article/details/84316326
一、等待设定

1、显式等待
显式等待是您定义的代码,用于在代码中继续进行之前等待某个条件发生。这种情况的极端情况是time.sleep(),它将条件设置为要等待的确切时间段。WebDriverWait的结合预期条件是一种方法。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()

wait = WebDriverWait(driver, 10)  #设置等待时间为10s
driver.maximize_window()    #设置窗口最大化
driver.get("https://www.baidu.com/")

#搜索食品相关内容
element = wait.until(
    EC.presence_of_element_located((By.CSS_SELECTOR ,'#kw'))
).send_keys('食品')


EC(Expected Conditions)的常用方法:
title_is
title_contains
presence_of_element_located
visibility_of_element_located
visibility_of
presence_of_all_elements_located
text_to_be_present_in_element
text_to_be_present_in_element_value
frame_to_be_available_and_switch_to_it
invisibility_of_element_located
element_to_be_clickable
staleness_of
element_to_be_selected
element_located_to_be_selected
element_selection_state_to_be
element_located_selection_state_to_be
alert_is_present

2、隐式等待
隐式等待告诉WebDriver在试图找到任何不能立即可用的元素(或元素)时轮询DOM一段时间。默认设置为0。一旦设置完毕,隐式等待就会被设置为WebDriver对象的生命周期。

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()    #设置窗口最大化
driver.implicitly_wait(10) # 隐式等待时间设置为10s
driver.get("https://www.baidu.com/")
myDynamicElement = driver.find_element_by_id("kw")
二、模拟鼠标事件
常用方法介绍
from selenium.webdriver.common.action_chains import ActionChains    #模拟鼠标操作的方法
ActionChains(driver)   #生成模拟用户行为
perform()              #执行存储行为
context_click()        #右击事件
double_click()         #双击事件
drag_and_drop()        #拖动
move_to_element()      #鼠标停在一个元素上
click_and_hold()       #按下鼠标左键再一个元素上


示例:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains   

driver = webdriver.Chrome()
wait = WebDriverWait(driver,10)
driver.maximize_window()    #设置窗口最大化
driver.get("https://www.oldboyedu.com/")

element = driver.find_element_by_link_text('大数据开发')     #找到标签
ActionChains(driver).move_to_element(element).perform()    #将鼠标移动到标签上,显示隐藏内容
sub_ele = driver.find_element_by_link_text('课程详情')      #点击
sub_ele.click()
三、模拟键盘事件
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver.get("https://www.baidu.com/")
ele = driver.find_element_by_css_selector('#kw')

ele.send_keys('python3.6.')       #多输入了一个点号
ele.send_keys(Keys.BACK_SPACE)    #退格键  此时输入的就是 python3.6
ele.send_keys(Keys.CONTROL,'a')   #全选
ele.send_keys(Keys.CONTROL,'v')   #粘贴
ele.send_keys(Keys.CONTROL,'c')   #复制
ele.send_keys(Keys.CONTROL,'x')   #剪切
ele.send_keys(Keys.ENTER)         #回车
ele.clear()                       #清空输入内容
四、弹框操作
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome()
wait = WebDriverWait(driver,10)
driver.maximize_window()    #设置窗口最大化
driver.get(r"C:\Users\admin\Desktop\test.html")
driver.switch_to_alert()             #切换到alert框
driver.switch_to_alert().accept()    #确认
driver.switch_to_alert().dismiss()   #取消
driver.switch_to_alert().send_keys() #有输入框才能使用,否则报错
五、浏览器窗口切换
常用方法:
driver.window_handles      #显示所有的浏览器句柄
driver.current_window_handle  #显示当前浏览器句柄
driver.switch_to_window(driver.window_handles[1])  #切换到新的浏览器窗口上,索引从 0 开始
driver.current_url   #当前的url


示例:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
wait = WebDriverWait(driver,10)
driver.get("https://www.jd.com/")
element = wait.until(
    EC.element_to_be_clickable((By.CSS_SELECTOR,'#J_cate > ul > li:nth-child(1) > a'))
).click()
print(driver.current_url)
print(driver.window_handles)

driver.switch_to_window(driver.window_handles[1])   #切换
print(driver.current_url)
六、元素操作
clear      清除元素内容
send_keys  模拟按键输入
click      点击
submit     提交表单
back       回退
title      标题
maximize_window()   窗口最大化

详情请参考官网地址:https://selenium-python.readthedocs.io

猜你喜欢

转载自blog.csdn.net/m0_37886429/article/details/84316326