UI自动化测试:单击元素的3种方法

前言

用selenium进行UI自动化测试过程中肯定离不开点击元素的操作,最常用的方法就是元素的click()方法,但是有一些特殊的情况下可能会出现单击之后无反应的情况,于是总结了3种单击元素的方法,当某个方法不好用的时候可以尝试其他的方式进行操作。

操作代码

以下3种方法均以chrome浏览器,百度首页的搜索框和搜索按钮为例进行说明,道理是一样的。

元素的click方法

'''元素的click()方法'''
# 启动Chrome浏览器
driver = webdriver.Chrome(executable_path="f:\\chromedriver")
# 访问baidu首页
driver.get('http://www.baidu.com')

#根据id定位到搜索输入框,并输入'陈伟霆'
searchBox = driver.find_element_by_id('kw')
searchBox.send_keys('陈伟霆')
#根据id定位到搜索按钮,并点击
searchButton = driver.find_element_by_id('su')
searchButton.click()

time.sleep(3)
assert '陈伟霆' in driver.page_source,'断言错误'
driver.quit()

通过执行JavaScript代码单击元素

'''JavaScript代码操作元素'''
driver = webdriver.Chrome(executable_path="f:\\chromedriver")
driver.get('http://www.baidu.com')

# 构造JavaScript查找百度首页的搜索输入框的代码字符串
searchInputBoxJS = "document.getElementById('kw').value='陈伟霆';"
# 构造JavaScript查找百度首页的搜索按钮的代码字符串
searchButtonJS = "document.getElementById('su').click()"
# 执行搜索输入框的js代码
driver.execute_script(searchInputBoxJS)
time.sleep(2)
# 执行点击搜索按钮的js代码
driver.execute_script(searchButtonJS)
time.sleep(2)

assert '陈伟霆' in driver.page_source,'断言错误'
driver.quit()

tab+回车实现类似单击的操作

注意:

1.这种方法需要先提前判断好要按几次tab键定位到你想要找的元素

2.安装包:py -3 -m pip install pywin32

from selenium import webdriver
import time
import win32api, win32con

VK_CODE ={'ctrl':0x11, 't':0x54, 'tab':0x09,'enter':0x0D,}

def keyDown(keyName):
      '''键盘键按下'''
      win32api.keybd_event(VK_CODE[keyName], 0, 0, 0)

def keyUp(keyName):
      '''键盘键抬起'''
      win32api.keybd_event(VK_CODE[keyName], 0, win32con.KEYEVENTF_KEYUP, 0)

driver = webdriver.Chrome(executable_path="f:\\chromedriver")
driver.get('http://www.baidu.com')

#根据id定位到搜索输入框,并输入'陈伟霆'
driver.find_element_by_id('kw').send_keys('陈伟霆')
#用tab键将焦点切换到搜索按钮,输入enter点击搜索
keyDown('tab')
keyUp('tab')
keyDown('enter')
keyUp('enter')

time.sleep(3)
assert '陈伟霆' in driver.page_source,'断言错误'
driver.quit()

 

你可能感兴趣的:(自动化测试)