selenium调用JavaScript定位元素及事件操作

JavaScript 事件

HTML 事件是发生在 HTML 元素上的事情。
当在 HTML 页面中使用 JavaScript 时, JavaScript 可以触发这些事件。

JavaScript 可以做什么?

事件可以用于处理表单验证,用户输入,用户行为及浏览器动作:

页面加载时触发事件
页面关闭时触发事件
用户点击按钮执行动作
验证用户输入内容的合法性
等等 …

具体请查看:http://www.runoob.com/js/js-events.html

页面经常有一些操作是selenium中无法实现的,我们可以通过调用JavaScript去实现,还有一些元素是无法通过selenium常用的方法去定位到的,好了废话不多说直接上代码;

#coding=utf8
import unittest  #调用unittest框架
from selenium import webdriver
from time import sleep


class Tests(unittest.TestCase):
    """
    测试用例
    ···
    def setUp(self):
        driver = webdriver.Chrome()
        # driver = webdriver.Firefox()
        driver.implicitly_wait(10)
        driver.maximize_window()
        driver.get('http://www.baidu.com/')
        self.driver = driver

    def tearDown(self):
        sleep(2)
        self.driver.quit()

    def test1(self):
        driver = self.driver
        # 使用js定位元素
        el = driver.execute_script('return document.getElementById("kw")')
        el.clear()
        el.send_keys('Python')
        
        # 使用js滚动屏幕
        driver.execute_script("scrollBy(0,innerHeight)")#向下滚动
		sleep(1)
        driver.execute_script("scrollBy(0,-innerHeight)")#向上滚动

		el = driver.find_element_by_link_text('百度首页')
        # 使用js点击元素, 第二个参数是要点击的元素对象
        driver.execute_script("arguments[0].click();", el)
        

猜你喜欢

转载自blog.csdn.net/qq_41776011/article/details/84586996