zoukankan      html  css  js  c++  java
  • webdriver高级应用-使用JavaScript操作页面元素

    Webdriver搞不定的,需要用js,无需引入有关js的包就可用
    在WebDriver脚本代码中执行JavaScript代码,来实现对页面元素的操作。此方法主要用于解决在某些情况下,页面元素的.click()方法无法生效等问题。
    #encoding=utf-8
    from selenium import webdriver
    from selenium.common.exceptions import WebDriverException
    import unittest
    import traceback
    import time
    
    class TestDemo(unittest.TestCase):
    
        def setUp(self):
            # 启动Chrome浏览器
            #self.driver = webdriver.Chrome(executable_path = "c:\chromedriver")
            self.driver = webdriver.Ie(executable_path = "e:\IEDriverServer")
    
        def test_executeScript(self):
            url = "http://www.sogou.com"
            # 访问baidu首页
            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):
            # 退出IE浏览器
            self.driver.quit()
    
    if __name__ == '__main__':
        unittest.main()

    解释:

    >>> try:
    ...     1/0
    ... except:
    ...     print "error"
    ...
    error


    >>> import traceback
    >>> try:
    ...     1/0
    ... except:
    ...     traceback.print_exc()
    ...
    Traceback (most recent call last):
      File "<stdin>", line 2, in <module>
    ZeroDivisionError: integer division or modulo by zero

    #Traceback可以打印出出错的具体错误信息和位置

  • 相关阅读:
    Javascript、Jquery获取浏览器和屏幕各种高度宽度
    Chrome浏览器快捷键
    CSS流体(自适应)布局下宽度分离原则
    JS中的call()和apply()方法
    获取滚动条高度
    手把手教你写Sublime中的Snippet
    Ajax
    javascript创建文档碎片节点
    JS获取元素尺寸大小、鼠标位置
    web开发必备插件
  • 原文地址:https://www.cnblogs.com/qingqing-919/p/8715777.html
Copyright © 2011-2022 走看看