目的:
在webdriver脚本代码中执行JavaScript代码,来实现对页面元素的操作,此种方法主要用来解决在某些情况下,页面元素的.click()方法无法生效等问题。
用于测试的网址:
http://www.baidu.com
实例代码:
# 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="H:\\ruanjian\\Python\\chromedriver_win32\\chromedriver")
def test_executeScript(self):
url="http://www.baidu.com"
#访问百度首页
self.driver.get(url)
#构造JavaScript查找百度首页的搜索输入框的代码字符串
searchInputBoxJS="document.getElementById('kw').value='光荣之路';"
#构造JavaScript查找百度首页的搜索按钮的代码字符串
searchButtonJS="document.getElementById('su').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 as e:
#当定位失败时,会抛出WebDriverException异常
print(u"在页面中没有找到要操作的页面元素",traceback.print_exc())
except AssertionError as e:
print(u"页面不存在断言的关键字串")
except Exception as e:
#发生其他异常时,打印异常堆栈信息
print(traceback.print_exc())
def tearDown(self):
#退出Chrome浏览器
self.driver.quit()
if __name__ == "__main__":
unittest.main()