目的:
有些被测试页面包含Ajax的局部刷新机制,并且会产生显示多条数据的浮动框,需要单击选择浮动框中包含某个关键字的选项。
测试地址:
http://www.sogou.com
第一种方法:通过模拟键盘下箭头进行选择悬浮框选项
实例代码:
# coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import unittest
import time
class TestDemo(unittest.TestCase):
def setUp(self):
#启动Chrome浏览器
self.driver=webdriver.Chrome(executable_path="H:\\ruanjian\\Python\\chromedriver_win32\\chromedriver")
def test_AjaxDivOptionByKeys(self):
url="http://www.sogou.com/"
# 访问搜狗首页
self.driver.get(url)
#找个搜狗首页中输入框页面元素
searchBox=self.driver.find_element_by_id("query")
#在输入框中输入“测试”
searchBox.send_keys("测试")
#等待2秒,以便悬浮框加载完成
time.sleep(2)
for i in range(3):
#选择复选框中第几个联想关键词就循环几次
#模拟键盘单击下箭头
searchBox.send_keys(Keys.DOWN)
time.sleep(1)
#当按下箭头到想要选择的选项后,再模拟键盘按回车键,选中该选项
searchBox.send_keys(Keys.ENTER)
time.sleep(3)
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()
第二种方法:通过匹配模糊内容选择悬浮框中选项。
# coding=utf-8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import unittest
import traceback
import time
class TestDemo(unittest.TestCase):
def setUp(self):
#启动Chrome浏览器
self.driver=webdriver.Chrome(executable_path="H:\\ruanjian\\Python\\chromedriver_win32\\chromedriver")
def test_AjaxDivOptionByWords(self):
url="http://www.sogou.com/"
# 访问搜狗首页
self.driver.get(url)
try:
#找个搜狗首页中输入框页面元素
searchBox=self.driver.find_element_by_id("query")
#在输入框中输入“测试”
searchBox.send_keys("测试")
#等待2秒,以便悬浮框加载完成
time.sleep(2)
#查找内容包含“篮球电影”的悬浮选项
suggest_option=self.driver.\
find_element_by_xpath("//ul/li[contains(.,'mychat')]")
#单击找到的选项
suggest_option.click()
time.sleep(3)
except NoSuchElementException as e:
#打印异常堆栈信息
print(traceback.print_exc())
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()