Selenium 安装与配置及webdriver的API与定位元素
1. 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
下载下来之后,里面的内容仅为一个.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定位的一种补充
- #<a class="mnav" href="http://news.baidu.com">这是今天的当日新闻</a>
- #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:用于获得当前页面的URL
- 2.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*():定位元素,用于二次定位
常用页面元素属性说明
>>>>>>待续
Selenium 安装与配置及webdriver的API与定位元素的更多相关文章
- Selenium(三)webdriver的API与定位元素
在学习定位元素之前,应该要学会: 1.打开浏览器 2.打开网页 3.定位元素及操作 ①定位元素 可只此输入框的id是kw,name是wd,class是s_ipt ②在python编辑器中找到该元素 通 ...
- Python+Selenium练习篇之5-利用partial link text定位元素
本文介绍如何通过partial link text来定位页面元素.看到这个,有点和前一篇文字link text有点类似.字面意思,确实和link text相类似,partial link text就是 ...
- webdriver的API
基本API 1.页面刷新 driver.fresh() 2.页面切换 driver.back(). driver.forward() 3.设置窗口大小 driver.set_wind ...
- selenium-java,selenium安装配置
准备材料 1.java jdk http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.开发工具 https://ww ...
- selenium 安装与环境配置
selenium的安装 环境配置:python2.7+selenium2+Firefox46以下版本 本次安装环境:python2.7.13+selenium2.53.6+Firefox46 官网下载 ...
- Python+Selenium安装及环境配置
一.Python安装 Window系统下,python的安装很简单.访问python.org/download,下载最新版本,安装过程与其他windows软件类似.记得下载后设置path环境变量,然后 ...
- Python+Selenium(webdriver常用API)
总结了Python+selenium常用的一些方法函数,以后有新增再随时更新: 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: ...
- Appium环境的安装与配置,Python测试脚本测试
Appium自动化测试系列1 - Appium环境的安装与配置 发表于4个月前(2015-01-27 14:34) 阅读(803) | 评论(0) 0人收藏此文章, 我要收藏 赞0 寻找 会’偷懒 ...
- Selenium安装(二)
安装python 安装Selenium之前首先来说一下Python,python是一门动态性语言,python的编写比较灵活,简洁,开发效率高.因此以python结合selenium来进行自动化测试. ...
随机推荐
- DJANGO里让用户自助修改邮箱地址
因为在部署过程中会涉及用户邮件发送,如果有的同事不愿意收到太多邮件,则可以自己定义为不存在的邮箱. 我们在注册的时候,也不会写用户邮箱地址,那么他们也可以在这里自己更改. changeemail.ht ...
- mongodb--安全
安全和认证 mongodb和redis比较像,安全部分依赖于其所存在的环境 一定要把mongodb放在一个可信的环境下去运行,mongodb只能被web服务器所访问,禁止开外网端口访问mongodb, ...
- [bzoj2466][中山市选2009]树_树形dp
树 bzoj-2466 中山市选-2009 题目大意:给定一棵树,每一个点有一个按钮和一个灯泡.如果按下一个点的按钮那么和这个点直接相连的点包括这个点的灯泡的状态会改变.如果是点亮就会变成熄灭,如果 ...
- nginx 、tomcat 集群配置、shiro Session 共享
一.nginx.config 配置 #user nobody; worker_processes ; #error_log logs/error.log; #error_log logs/error. ...
- 基于I/O的Server/Client实现
在前面的文章中讲了基于NIO实现的Server/Client.本文就讲讲基于同步堵塞式I/O实现的Server/Client好与前面的NIO中的Server/Client进行对照. 网络编程中须要解决 ...
- Codeforces 474 C. Captain Marmot
4*4*4*4暴力+点的旋转+推断正方型 C. Captain Marmot time limit per test 1 second memory limit per test 256 megaby ...
- 【软件project】之第五、六章总结
软件project的前几章各自是软件计划.需求分析.软件设计.整体的都规划好了以后,就该着手去实践了. 所谓的理论体系足够强大了以后,实践就显得尤为轻松.我们设计软件,实践当然就是用我已经计划好的语言 ...
- maven创建web报错failure to transfer org.codehaus.plexus
failure to transfer org.codehaus.plexus:plexus:pom:2.0.5 from http:// repo.maven.apache.org/maven2 w ...
- explain 分析
EXPLAIN的结果中,有哪些关键信息值得注意呢? MySQL的EXPLAIN当然和ORACLE的没法比,不过我们从它输出的结果中,也可以得到很多有用的信息. 总的来说,我们只需要关注结果中的几列: ...
- TensorFlow——分布式的TensorFlow运行环境
当我们在大型的数据集上面进行深度学习的训练时,往往需要大量的运行资源,而且还要花费大量时间才能完成训练. 1.分布式TensorFlow的角色与原理 在分布式的TensorFlow中的角色分配如下: ...