selenium 的节点交互和动作链

节点交互

         selenium 可以驱动浏览器来执行一些操作,也就是说可以让浏览器模仿执行一些操作。比较常见的用法有:输入文字 send_keys() 方法,清空文字方法 clear() 方法,点击按钮时用 click() 方法。

示例如下:

from selenium import webdriver

import time

driver = webdriver.Chrome()

driver.get('https://www.baidu.com')

input_q = driver.find_element_by_id('kw')

input_q.send_keys('iphone')

time.sleep(2)

input_q.clear()

input_q.send_keys('ipad')

button = driver.find_element_by_class_name('bg')

button.click()

time.sleep(3)

driver.close()

          这里首先驱动了浏览器打开了百度,然后用find_element_by_id() 方法获取搜索框,然后用 send_keys()方法输入 iphone 文字,等待两秒后使用 clear() 方法清空了搜索框的内容,再次调用了 send_keys() 方法输入 ipad 文字,之后再用 find_element_by_class_name() 方法获取搜索按钮,最后调用 click() 方法完成搜索动作。

通过上面的方法,我们就完成了一些常见节点操作,更多的操作可以参见官方文档的交互动作介绍:https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement

动作链

           在上面的实例中,一些交互动作都是针对某个节点执行的。比如,对于输入框,我们调用它输入文字和清空文字的方法;对于按钮,就调用了点击方法。其实还有另外一些操作,他们没有特定的执行对象,比如鼠标拖拽,键盘按键等,这些动作用另一种方式来执行,那就是动作练。

比如,现在实现一个节点的拖拽操作,将某个节点从一处拖拽到另外一处可以这样实现:http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable

from selenium import webdriver

from selenium.webdriver import ActionChains

browser = webdriver.Chrome()

base_url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'

browser.get(base_url)

browser.switch_to.frame('iframeResult')

source = browser.find_element_by_id('draggable')

target = browser.find_element_by_id('droppable')

actions = ActionChains(browser)

actions.drag_and_drop(source,target)

actions.perform()

         首先,代开网页中的一个拖拽实例,然后依次选中要拖拽的节点和拖拽到的目标节点,接着声明 ActionChains 对象并将其赋值为 actions 变量,然后通过调用 actions 变量的 drag_and_drop() 方法,在调用 perfrom() 方法执行动作,此时就完成了拖拽操作,如下图:

拖拽前


拖拽后

你可能感兴趣的:(selenium 的节点交互和动作链)