一:前言
上一篇文章讲了下selenium+phantomjs进行简单模拟网站登录,这一篇我们就在深入一下,讲一下selenium其他相关的东西。(selenium很强大,而在下也只是个菜鸡,所以有不足的还请各位老铁指正,咱们共同进步。)
Selenium是一个Web的自动化测试工具,所以它存在的意义当然不知识为了模拟登陆,我们日常生活中在网页上的行为,基本上都能用selenium实现。
鼠标动作链
有些时候,我们需要再页面上模拟一些鼠标操作,比如双击、右击、拖拽甚至按住不动等,我们可以通过导入 ActionChains 类来做到:
#导入 ActionChains 类
from selenium.webdriver import ActionChains
# 鼠标移动到 ac 位置
ac = driver.find_element_by_xpath('element')
ActionChains(driver).move_to_element(ac).perform()
# 在 ac 位置单击
ac = driver.find_element_by_xpath("elementA")
ActionChains(driver).move_to_element(ac).click(ac).perform()
# 在 ac 位置双击
ac = driver.find_element_by_xpath("elementB")
ActionChains(driver).move_to_element(ac).double_click(ac).perform()
# 在 ac 位置右击
ac = driver.find_element_by_xpath("elementC")
ActionChains(driver).move_to_element(ac).context_click(ac).perform()
# 在 ac 位置左键单击hold住
ac = driver.find_element_by_xpath('elementF')
ActionChains(driver).move_to_element(ac).click_and_hold(ac).perform()
# 将 ac1 拖拽到 ac2 位置
ac1 = driver.find_element_by_xpath('elementD')
ac2 = driver.find_element_by_xpath('elementE')
ActionChains(driver).drag_and_drop(ac1, ac2).perform()
填充表单
我们已经知道了怎样向文本框中输入文字,但是有时候我们会碰到 标签的下拉框。直接点击下拉框中的选项不一定可行。
<select id="status" class="form-control valid" onchange="" name="status">
<option value=""></option>
<option value="0">未审核</option>
<option value="1">初审通过</option>
<option value="2">复审通过</option>
<option value="3">审核不通过</option>
</select>
Selenium专门提供了Select类来处理下拉框。 其实 WebDriver 中提供了一个叫 Select 的方法,可以帮助我们完成这些事情:
# 导入 Select 类
from selenium.webdriver.support.ui import Select
# 找到 name 的选项卡
select = Select(driver.find_element_by_name('status'))
select.select_by_index(1)
select.select_by_value("0")
select.select_by_visible_text(u"未审核")
index 索引从 0 开始
value是option标签的一个属性值,并不是显示在下拉框中的值
visible_text是在option标签文本的值,是显示在下拉框的值
取消选择
select.deselect_all()
弹窗处理
alert = driver.switch_to_alert()
获取所有窗口
driver.window_handles
遍历每一个窗口对象
for handle in driver.window_handles:
driver.switch_to_window(handle)
前进
driver.forward()
后退
driver.back()
获取页面cookie值
for cookie in driver.get_cookies():
print “%s -> %s” % (cookie[‘name’], cookie[‘value’])
执行JavaScript语句
# 向下滚动10000像素
js = "document.body.scrollTop=10000"
driver.execute_script(js)
web自动化测试可谓是博大精深,作为一名菜鸡,在下也知道这些了,如果老铁们英文好的话可以去研究研究官方文档。