博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium 安装与配置及webdriver的API与定位元素
阅读量:7226 次
发布时间:2019-06-29

本文共 8815 字,大约阅读时间需要 29 分钟。

1. selenium安装命令行

C:\Users\wu>cd /d E:\soft\python3.6\Scripts
E:\soft\python3.6\Scripts>pip3 install -U selenium

2. 安装chromedriver

chromedriver的下载地址:(http://chromedriver.storage.googleapis.com/index.html)

selenium之 chromedriver与chrome版本映射表:

chromedriver版本    支持的Chrome版本    v2.40                v66-68    v2.39                v66-68    v2.38                v65-67    v2.37                v64-66    v2.36                v63-65    v2.35                v62-64    v2.34                v61-63    v2.33                v60-62    v2.32                v59-61    v2.31                v58-60    v2.30                v58-60    v2.29                v56-58    v2.28                v55-57    v2.27                v54-56    v2.26                v53-55    v2.25                v53-55    v2.24                v52-54    v2.23                v51-53    v2.22                v49-52    v2.21                v46-50    v2.20                v43-48    v2.19                v43-47    v2.18                v43-46    v2.17                v42-43    v2.13                v42-45    v2.15                v40-43    v2.14                v39-42    v2.13                v38-41    v2.12               v36-40    v2.11                v36-40    v2.10                v33-36    v2.9                v31-34    v2.8                v30-33    v2.7                v30-33    v2.6                v29-32    v2.5                v29-32    v2.4                v29-32
View Code

下载下来之后,里面的内容仅为一个.exe文件,将其解压在chrome的安装目录下(..........\AppData\Local\Google\Chrome\Application),然后再配置环境变量

3. webdriver的API与定位元素

  3.1  WebDriver的八种元素定位方法

# 元素定位(WebDriver的八种元素定位方法)# 元素名称                 webdriverAPI# <1>id                  find_element_by_id()# <2>name                find_element_by_name()# <3>class name          find_element_by_class_name()# <4>tag name            find_element_by_tag_name()# <5>link text           find_element_by_link_text()# <6>partial link text   find_element_by_partial_link_text()# <7>xpath               find_element_by_xpath()# <8>css selector        find_element_by_css_selector()
八种定位方法
driver=webdriver.Chrome()driver.get('https://www.baidu.com')#打开一个网页# driver.title#获取网页的title# driver.current_url#获取URL# print(driver.title,driver.current_url)#例:# 1、通过id属性定位百度的输入框#ele=driver.find_element_by_id('kw')#ele.send_keys('python')#向定位元素输入内容#ele.clear()#清空输入内容#driver.back()#返回上一页#driver.maximize_window()#最大化窗口#2、通过name属性定位百度的输入框#ele=driver.find_element_by_name("wd")#3、通过class属性定位百度的输入框#ele=driver.find_element_by_class("s_ipt")#4、通过tag属性定位#ele=driver.find_element_by_tag_name("input")#5 、通过link定位(既通过标签对之间的文本信息进行定位)# ele=driver.find_element_by_link_text("新闻")#6、通过partial link定位,它是对link定位的一种补充#这是今天的当日新闻#ele=driver.find_element_by_link_text("当日新闻")#7、通过XPath定位#a.绝对路径定位#绝对路径定位就是根据HTML文档的文本结构,一层一层向下找到需要定位的文本内容,比如同样是找到百度搜索框的位置,可以使用如下语句:#find_elemenet_by_xpath("/html/body/div/div/div/div/div/form/span/input")#b.通过元素属性定位#//XXX[@id=YYY]选取所有XXX元素id属性为YYY的元素,常用的还有class和name属性定位# ele=driver.find_element_by_xpath('//input[@id=\'kw\']')#ele=driver.find_element_by_xpath("//input[@class='s_ipt']")#ele=driver.find_element_by_xpath("//input[@name='wd']")#c.层级与属性结合# ele=driver.find_element_by_xpath("//form[@id='form']/span/input")# print(ele.get_attribute('class'))#8、通过css selector定位# a.通过class属性定位搜索框:find_element_by_css_selector(".s_ipt")## b.通过id属性定位:find_element_by_css_selector("#kw")## c.通过标签名定位:find_element_by_css_selector("input")## d.通过父子关系定位:find_element_by_css_selector("span>input")## 上面的写法的意思是我们要找的是一个input标签,这个input标签的父元素为span标签## e.通过属性定位:find_element_by_css_selector("[autocomplete=off]")## 这些写法的含义是我们要找的这个标签有一个autocomplete属性,而且这属性的值是"off"## f.组合定位法:## find_element_by_css_selector("form.fm>span>input.s_ipt")
元素定位练习

    3.2  浏览器属性

driver attributes:['NATIVE_EVENTS_ALLOWED', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_file_detector', '_is_remote', '_mobile', '_switch_to', '_unwrap_value', '_wrap_value', 'add_cookie', 'application_cache', 'back', 'binary', 'capabilities', 'close', 'command_executor', 'create_web_element', 'current_url', 'current_window_handle', 'delete_all_cookies', 'delete_cookie', 'desired_capabilities', 'error_handler', 'execute', 'execute_async_script', 'execute_script', 'file_detector', 'find_element', 'find_element_by_class_name', 'find_element_by_css_selector', 'find_element_by_id', 'find_element_by_link_text', 'find_element_by_name', 'find_element_by_partial_link_text', 'find_element_by_tag_name', 'find_element_by_xpath', 'find_elements', 'find_elements_by_class_name', 'find_elements_by_css_selector', 'find_elements_by_id', 'find_elements_by_link_text', 'find_elements_by_name', 'find_elements_by_partial_link_text', 'find_elements_by_tag_name', 'find_elements_by_xpath', 'firefox_profile', 'forward', 'get', 'get_cookie', 'get_cookies', 'get_log', 'get_screenshot_as_base64', 'get_screenshot_as_file', 'get_screenshot_as_png', 'get_window_position', 'get_window_size', 'implicitly_wait', 'log_types', 'maximize_window', 'mobile', 'name', 'orientation', 'page_source', 'profile', 'quit', 'refresh', 'save_screenshot', 'session_id', 'set_page_load_timeout', 'set_script_timeout', 'set_window_position', 'set_window_size', 'start_client', 'start_session', 'stop_client', 'switch_to', 'switch_to_active_element', 'switch_to_alert', 'switch_to_default_content', 'switch_to_frame', 'switch_to_window', 'title', 'w3c', 'window_handles']
浏览器属性
调用说明:driver.属性值 变量说明:1.driver.current_url:用于获得当前页面的URL2.driver.title:用于获取当前页面的标题3.driver.page_source:用于获取页面html源代码4.driver.current_window_handle:用于获取当前窗口句柄5.driver.window_handles:用于获取所有窗口句柄 函数说明:1.driver.find_element*():定位元素2.driver.get(url):浏览器加载url。实例:driver.get("http//:www.baidu.com")3.driver.forward():浏览器向前(点击向前按钮)。4.driver.back():浏览器向后(点击向后按钮)。5.driver.refresh():浏览器刷新(点击刷新按钮)。6.driver.close():关闭当前窗口,或最后打开的窗口。7.driver.quit():关闭所有关联窗口,并且安全关闭session。8.driver.maximize_window():最大化浏览器窗口。9.driver.set_window_size(宽,高):设置浏览器窗口大小。10.driver.get_window_size():获取当前窗口的长和宽。11.driver.get_window_position():获取当前窗口坐标。12.driver.get_screenshot_as_file(filename):截取当前窗口。实例:driver.get_screenshot_as_file('D:/selenium/image/baidu.jpg')13.driver.implicitly_wait(秒):隐式等待,通过一定的时长等待页面上某一元素加载完成。若提前定位到元素,则继续执行。若超过时间未加载出,则抛出NoSuchElementException异常。实例:driver.implicitly_wait(10) #等待10秒14.driver.switch_to_frame(id或name属性值):切换到新表单(同一窗口)。若无id或属性值,可先通过xpath定位到iframe,再将值传给switch_to_frame()15.driver.switch_to.parent_content():跳出当前一级表单。该方法默认对应于离它最近的switch_to.frame()方法。16.driver.switch_to.default_content():跳回最外层的页面。17.driver.switch_to_window(窗口句柄):切换到新窗口。18.driver.switch_to.window(窗口句柄):切换到新窗口。19.driver.switch_to_alert():警告框处理。处理JavaScript所生成的alert,confirm,prompt.20.driver.switch_to.alert():警告框处理。21.driver.execute_script(js):调用js。22.driver.get_cookies():获取当前会话所有cookie信息。23.driver.get_cookie(cookie_name):返回字典的key为“cookie_name”的cookie信息。实例:driver.get_cookie("NET_SessionId")24.driver.add_cookie(cookie_dict):添加cookie。“cookie_dict”指字典对象,必须有name和value值。25.driver.delete_cookie(name,optionsString):删除cookie信息。26.driver.delete_all_cookies():删除所有cookie信息。
常用浏览器属性说明

    3.3页面元素属性

['__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_execute', '_id', '_parent', '_upload', '_w3c', 'clear', 'click', 'find_element', 'find_element_by_class_name', 'find_element_by_css_selector', 'find_element_by_id', 'find_element_by_link_text', 'find_element_by_name', 'find_element_by_partial_link_text', 'find_element_by_tag_name', 'find_element_by_xpath', 'find_elements', 'find_elements_by_class_name', 'find_elements_by_css_selector', 'find_elements_by_id', 'find_elements_by_link_text', 'find_elements_by_name', 'find_elements_by_partial_link_text', 'find_elements_by_tag_name', 'find_elements_by_xpath', 'get_attribute', 'id', 'is_displayed', 'is_enabled', 'is_selected', 'location', 'location_once_scrolled_into_view', 'parent', 'rect', 'screenshot', 'screenshot_as_base64', 'screenshot_as_png', 'send_keys', 'size', 'submit', 'tag_name', 'text', 'value_of_css_property']
页面元素属性
调用说明:driver.find_element*.属性值或element=driver.find_element*element.属性值 变量说明:1.element.size:获取元素的尺寸。2.element.text:获取元素的文本。3.element.tag_name:获取标签名称。 函数说明:1.element.clear():清除文本。2.element.send_keys(value):输入文字或键盘按键(需导入Keys模块)。3.element.click():单击元素。4.element.get_attribute(name):获得属性值5.element.is_displayed():返回元素结果是否可见(True 或 False)6.element.is_selected():返回元素结果是否被选中(True 或 False)7.element.find_element*():定位元素,用于二次定位
常用页面元素属性说明

 

>>>>>>待续

转载于:https://www.cnblogs.com/wuxunyan/p/9353706.html

你可能感兴趣的文章
在electron中实现跨域请求,无需更改服务器端设置
查看>>
gitlab-ci配置详解(一)
查看>>
听说你叫Java(二)–Servlet请求
查看>>
案例分享〡三拾众筹持续交付开发流程支撑创新业务
查看>>
FreeWheel业务系统微服务化过程经验分享
查看>>
移动互联网下半场,iOS开发者如何“高薪”成长?
查看>>
Atlassian是怎样进行持续交付的?且听 Steve Smith一一道来
查看>>
Web Storage相关
查看>>
[PHP内核探索]PHP中的哈希表
查看>>
Apache-drill Architechture
查看>>
WordPress 5.2 Beta 3 发布,要求 PHP 5.6.20 以上版本
查看>>
通通连起来——无处不在的流
查看>>
互联网+时代,看云计算如何改变传统行业
查看>>
ZFS ARC & L2ARC zfs-$ver/module/zfs/arc.c
查看>>
c++类默认拷贝构造函数---浅复制
查看>>
2019年最火热的Golang项目
查看>>
可实现RSSD云硬盘120万IOPS的SPDK IO路径优化实践
查看>>
Vue项目部署遇到的坑(你肯定会遇到!)
查看>>
资源分享计划第三期 0511
查看>>
awk 文本处理
查看>>