selenium之ActionChains

参考网站:

Selenium with Python:http://selenium-python.readthedocs.io/

Selenium元素定位:http://selenium-python.readthedocs.io/locating-elements.html

每日代码笔记:https://gitter.im/pythoncodeltd/Lobby

CSS 类选择器详解:http://www.w3school.com.cn/css/css_selector_class.asp

CSS 基础语法:http://www.w3school.com.cn/css/css_syntax.asp

XPath 语法:http://www.w3school.com.cn/xpath/xpath_syntax.asp

Selenium with Python中文翻译文档:http://selenium-python-zh.readthedocs.io/en/latest/getting-started.html

鼠标键盘操作(ActionChains):https://blog.csdn.net/huilan_same/article/details/52305176

整理:

1.如下图,发布一个话题,查到元素class="span-success",可以使用两种方式来定位该元素

driver.find_element_by_class_name('span-success').click()

driver.find_element_by_css_selector('.span-success').click()

2.下拉框选择,先定位选择整个框,这个跟正常的元素定位一样,可以根据id来定位

driver.find_element_by_id('tab-value').click()

定位选择框之后,继续定位选项

如下截图,可以看到有三个option选项,分别为 分享,问答,招聘

可以分别使用selector和XPath两种定位

driver.find_element_by_xpath('#tab-value > option:nth-child(3)').click()

driver.find_element_by_css_selector('#tab-value > option:nth-child(3)').click()


文本框输入的模拟,正常手工测试的时候是鼠标点击文本框,再进行文本输入。selenium提供了针对鼠标操作的API。

引入对应的API

from selenium.webdriver import ActionChains

ActionChains这个API接口中提供了如下鼠标操作方法。

click(on_element=None) ——单击鼠标左键

click_and_hold(on_element=None) ——点击鼠标左键,不松开

context_click(on_element=None) ——点击鼠标右键

double_click(on_element=None) ——双击鼠标左键

drag_and_drop(source, target) ——拖拽到某个元素然后松开

drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开

key_down(value, element=None) ——按下某个键盘上的键

key_up(value, element=None) ——松开某个键

move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标

move_to_element(to_element) ——鼠标移动到某个元素

move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置

perform() ——执行链中的所有动作

release(on_element=None) ——在某个元素位置松开鼠标左键

send_keys(*keys_to_send) ——发送某个键到当前焦点的元素

send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素

查看官方文档:

下面两个方式都是可以的,第一种是链式的,第二种是分步的,最终实现的效果是一样的

思路:先定位到整个文本框class="CodeMirror-scroll"

再鼠标定位到文本框点击,键入文本

content = driver.find_element_by_class_name('CodeMirror-scroll')

ActionChains(driver).move_to_element(content).click().send_keys('Testing Testing').perform()


文本输入后,如果我们要针对文本内容进行加粗(快捷键为ctrl+b),只需要引入一个包

from selenium.webdriver.common.keys import Keys

则可以使用快捷键的模拟函数

key_down(value, element=None) ——按下某个键盘上的键

key_up(value, element=None) ——松开某个键


思路:文本输入后,按下ctrl不松开,键盘按下a,再按下b即对所有文本内容进行加粗

ActionChains(driver).move_to_element(content).click().key_down(Keys.CONTROL).send_keys('a').send_keys('b').key_up(Keys.CONTROL).perform()

完整代码如下图:


你可能感兴趣的:(selenium之ActionChains)