selenium

selenium定位方法
Selenium提供了8种定位方式。
id
name
class name
tag name
link text
partial link text
xpath
css selector
这8种定位方式在Python selenium中所对应的方法为:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()

定位方法的用法
假如我们有一个Web页面,通过前端工具(如,Firebug)查看到一个元素的属性是这样的。

我们的目的是要定位input标签的输入框。
通过id定位:
dr.find_element_by_id(“kw”)

通过name定位:
dr.find_element_by_name(“wd”)

通过class name定位:
dr.find_element_by_class_name(“s_ipt”)

通过tag name定位:
dr.find_element_by_tag_name(“input”)

通过xpath定位,xpath定位有N种写法,这里列几个常用写法:
dr.find_element_by_xpath("//[@id=‘kw’]")
dr.find_element_by_xpath("//
[@name=‘wd’]")
dr.find_element_by_xpath("//input[@class=‘s_ipt’]")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("//span[@class=‘soutu-btn’]/input")
dr.find_element_by_xpath("//form[@id=‘form’]/span/input")
dr.find_element_by_xpath("//input[@id=‘kw’ and @name=‘wd’]")

通过css定位,css定位有N种写法,这里列几个常用写法:
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector(“html > body > form > span > input”)
dr.find_element_by_css_selector(“span.soutu-btn> input#kw”)
dr.find_element_by_css_selector(“form#form > span > input”)

接下来,我们的页面上有一组文本链接。
新闻
hao123

通过link text定位:
dr.find_element_by_link_text(“新闻”)
dr.find_element_by_link_text(“hao123”)

通过link text定位:
dr.find_element_by_partial_link_text(“新”)
dr.find_element_by_partial_link_text(“hao”)
dr.find_element_by_partial_link_text(“123”)

ActionChains 类提供了鼠标操作的常用方法:

perform(): 执行所有 ActionChains 中存储的行为;

context_click(): 右击;

double_click(): 双击;

drag_and_drop(): 拖动;

move_to_element(): 鼠标悬停。


警告框处理
虫师 创建于 12 个月 之前
最后更新时间 2018-11-03

在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confirm/prompt,然后使用text/accept/dismiss/ send_keys等方法进行操作。

text:返回 alert/confirm/prompt 中的文字信息。

accept():接受现有警告框。

dismiss():解散现有警告框。

send_keys(keysToSend):发送文本至警告框。keysToSend:将文本发送至警告框。
如下图,百度搜索设置弹出的窗口是不能通过前端工具对其进行定位的,这个时候就可以通过switch_to_alert()方法接受这个弹窗。

下拉框
Select类用于定位select标签。
select_by_value() 方法用于定位下接选项中的value值。

上传
对于通过input标签实现的上传功能,可以将其看作是一个输入框,即通过send_keys()指定本地文件路径的方式实现文件上传。
from selenium import webdriver
import os

driver = webdriver.Firefox()
file_path = ‘file:///’ + os.path.abspath(‘upfile.html’)
driver.get(file_path)

定位上传按钮,添加本地文件

driver.find_element_by_name(“file”).send_keys(‘D:\upload_file.txt’)

driver.quit()


有时候我们需要验证浏览器中cookie是否正确,因为基于真实cookie的测试是无法通过白盒和集成测试进行的。WebDriver提供了操作Cookie的相关方法,可以读取、添加和删除cookie信息。
WebDriver操作cookie的方法:

get_cookies(): 获得所有cookie信息。

get_cookie(name): 返回字典的key为“name”的cookie信息。

add_cookie(cookie_dict) : 添加cookie。“cookie_dict”指字典对象,必须有name 和value 值。

delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”。

delete_all_cookies(): 删除所有cookie信息。

错误截图:
WebDriver提供了截图函数get_screenshot_as_file()来截取当前窗口。

通过javascript设置浏览器窗口的滚动条位置

js=“window.scrollTo(100,450);”
driver.execute_script(js)

WebDriver提供了execute_script()方法来执行JavaScript代码。
用于调整浏览器滚动条位置的JavaScript代码如下:


window.scrollTo(0,450);

close() 关闭单个窗口

quit() 关闭所有窗口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值