• WebDriver高阶API(1)


    WebDriver高阶API(1)

    1、使用JavaScript操作页面元素

    #encoding=utf-8
    import time
    import unittest
    import traceback
    from selenium import webdriver
    from selenium.common.exceptions import WebDriverException
    
    class TestDemo(unittest.TestCase):
        def setUp(self):
            #启动浏览器
            self.driver = webdriver.Ie(executable_path = "D:\IEDriverServer")
        def test_executeScript(self):
            url = "http://www.sogou.com"
            #访问搜狗首页
            self.driver.get(url)
            #构造JavaScript查找搜狗首页的搜索输入框并输入“魔兽世界”的代码字符串
            searchInputBoxJs = "document.getElementById('query').value='魔兽世界'"
            #构造JavaScript查找搜狗首页的搜索按钮并点击的代码字符串
            searchButtonJs = "document.getElementById('stb').click()"
            try:
                #通过JavaScript代码在搜索首页输入框中输入“魔兽世界”
                self.driver.execute_script(searchInputBoxJs)
                time.sleep(2)
                #通过JavaScript代码点击搜狗首页上的搜索按钮
                self.driver.execute_script(searchButtonJs)
                time.sleep(2)
                #断言
                self.assertTrue(u"魔兽世界" in self.driver.page_source)
            except WebDriverException,e:
                #当定位失败时,会抛出WebDriverException异常
                print u"在页面中没有找到要操作的页面元素",traceback.print_exc()
            except AssertionError,e:
                print u"页面不存在断言的关键字"
            except Exception,e:
                #发生其他异常时,打印异常堆栈信息
                print traceback.print_exc()
    
        def tearDown(self):
                self.driver.quit()
    
    if __name__ == "__main__":
        unittest.main()

    2、操作滚动条 JS

    #encoding=utf-8
    import time
    import unittest
    import traceback
    from selenium import webdriver
    
    class TestDemo(unittest.TestCase):
        def setUp(self):
            #启动浏览器
            self.driver = webdriver.Ie(executable_path = "D:\IEdriverServer")
        def test_scroll(self):
            url = "http://www.sohu.com"
            #访问搜狗首页
            try:
                self.driver.get(url)
                #使用JavaScript的scrollTo函数和document.body.scrollHeight参数
                # 将页面滚动条滑动到页面的最下方
                self.driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
                #停顿3秒,用于人工验证滚动条是否滑动到指定位置
                #根据测试需要,可注释下面的停顿代码
                time.sleep(3)
    
                #使用JavaScript 的scrollIntoView函数将被遮挡的元素滚动到可见屏幕上
                #scrollIntoView(true)表示将元素滚动到屏幕中间
                #scrollIntoView(false)表示将元素滚动到屏幕底部
                self.driver.execute_script("document.getElementsByTagName('a')[500].scrollIntoView(true);")
                time.sleep(3)
    
                #使用javascript的scrollBy方法,使用0和400横纵坐参数
                #将页面纵向向下滚动400像素
                self.driver.execute_script("window.scrollBy(0,400)")
                time.sleep(3)
            except Exception,e:
                print traceback.print_exc()
    
        def tearDown(self):
            self.driver.quit()
    
    if __name__ == "__main__":
        unittest.main()

    3、操作Ajax产生的浮动框

    方法一:通过模拟键盘下箭头进行选择悬浮框选项

    #encoding=utf-8
    import time
    import unittest
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    class TestDemo(unittest.TestCase):
        def setUp(self):
            #启动浏览器
            self.driver = webdriver.Ie(executable_path = "D:\IEDriverServer")
        def test_AjaxDivOptionByKeys(self):
            url = "http://www.sogou.com"
            #访问sogou首页
            self.driver.get(url)
            #找到搜狗首页中的搜索输入框页面元素
            searchBox = self.driver.find_element_by_id("query")
            #在输入框输入 “魔兽世界”
            searchBox.send_keys(u"魔兽世界")
            #等待2秒,以便悬浮框加载完成
            time.sleep(2)
            for i in range(3):
                #选择悬浮框中的第几个联想关键词选项就循环几次
                #模拟键盘单击下箭头
                searchBox.send_keys(Keys.DOWN)
                time.sleep(0.5)
    
            #当按下箭头到想要选择的选项后,瑞模拟键盘按回车键,选中该选项
            searchBox.send_keys(Keys.ENTER)
            time.sleep(2)
    
        def tearDown(self):
            self.driver.quit()
    
    if __name__ == "__main__":
        unittest.main()

    方法二:通过匹配模糊内容选择悬浮框中选项

    #encoding=utf-8
    import time
    import unittest
    import traceback
    from selenium import webdriver
    from selenium.common.exceptions import NoSuchElementException
    
    class TestDemo(unittest.TestCase):
        def setUp(self):
            #启动浏览器
            self.driver = webdriver.Ie(executable_path = "D:\IEDriverServer")
        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(u"魔兽世界")
                #等待2秒,以便悬浮框完成林加载
                time.sleep(2)
                #查找内容包含“怀旧服”的悬浮框选项
                suggetion_option = self.driver.find_element_by_xpath("//ul/li[contains(.,'怀旧服')]")
                #单击找到的悬浮选项
                suggetion_option.click()
                time.sleep(2)
            except NoSuchElementException,e:
                #打印异常堆栈信息
                print traceback.print_exc()
    
        def tearDown(self):
            self.driver.quit()
    
    if __name__ == "__main__":
        unittest.main()

    方法三:固定选择某一项,使用索引

    #encoding=utf-8
    import time
    import unittest
    import traceback
    from selenium import webdriver
    from selenium.common.exceptions import NoSuchElementException
    
    class TestDemo(unittest.TestCase):
        def setUp(self):
            #启动浏览器
            self.driver = webdriver.Ie(executable_path = "D:\IEDriverServer")
        def test_AjaxDivOptionByIndex(self):
            url = "http://www.sogou.com"
            #访问搜狗首页
            self.driver.get(url)
            try:
                #找到搜狗首页中的搜索输入框页面元素
                searchBox = self.driver.find_element_by_id("query")
                #在输入框中输入 “魔兽世界”
                searchBox.send_keys(u"魔兽世界")
                #等待2秒以便悬浮杠加载完成
                time.sleep(2)
                #查找悬浮框中的第三项,只需要更改li[3]中索引数字,就可以实现任意单击悬浮框中的选项。注意,索引从1开始
                suggetion_option = self.driver.find_element_by_xpath("//*[@id='vl']/div[1]/ul/li[3]")
                #单击找到的选项
                suggetion_option.click()
                time.sleep(3)
            except NoSuchElementException,e:
                #打印异常堆栈信息
                print traceback.print_exc()
    
        def tearDown(self):
            self.driver.quit()
    
    if __name__ == "__mian__":
        unittest.main()

    4、结束Windows中浏览器进程

    #encoding=utf-8
    import unittest
    from selenium import webdriver
    
    class TestDemo(unittest.TestCase):
        def test_killWindowsProcess(self):
            chromeDriver = webdriver.Chrome(executable_path="D:\chromedriver")
            ieDriver = webdriver.Ie(executable_path="D:\IEDriverServer")
            #导入os包
            import os
            #结束ie浏览器进程
            returnCode = os.system("taskkill /F /iM iexplore.exe")
            if returnCode == 0:
                print u"成功结束Ie浏览器进程"
            else:
                print u"结束IE浏览器进程失败"
    
            #结束chrome浏览器
            returnCode = os.system("taskkill /F /iM chrome.exe")
            if returnCode == 0:
                print u"成功结束chrome浏览器进程"
            else:
                print u"结束chrome浏览器进程失败"
    
    if __name__ == "__main__":
        unittest.main()
  • 相关阅读:
    vue 表单校验报错 [Vue warn]: Error in mounted hook: "Error: please transfer a valid prop path to form item!"
    ES6学习笔记—— 变量声明和解构赋值
    ES6学习笔记 —— 数组
    elementUI 的 DateTimePicker日期时间选择器设置指定时间禁用状态
    去除数组的空字符串或者空值
    zabbix proxy mysql数据库配置 摩天居士
    ss sock监控抓取 摩天居士
    EasyNVR通过国标级联到上级云服务器,视频无法播放的原因是什么?
    如何修改配置让EasyNVR获取录像接口返回精确的录像文件?
    RTSP/Onvif协议EasyNVR平台流媒体内核启动失败的原因是什么?
  • 原文地址:https://www.cnblogs.com/test-chen/p/10566780.html
Copyright © 2020-2023  润新知