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可以打印出出错的具体错误信息和位置

原文地址:https://www.cnblogs.com/qingqing-919/p/8715777.html