参考网站:
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()
完整代码如下图: