selenium笔记(1)
selenium笔记(1) 一、关闭页面:
1.driver.close() 关闭当前页面
2.driver.quit() 退出整个浏览器 二、定位元素:
1.find_element_by_id: 根据id来查找某个元素。等价于:
submitTag=driver.find_element_by_id('su')
submitTag1-driver.find_element(By.ID,'su') #如果要用这种方法 必须导入 from selenium.webdriver.common.by import By 2.find_element_by-c1ass-name: 根据类名查找元素。等价于:
submitTag=driver.find_element_by_c1ass_name('su')
submitTag1=driver.find_element(By.CLASS_WAME,'SU') 3.find_element_by-name: 根据name属性的值来查找元素。等价于:
submitTag-driver.find_element_by_name('email')
submitTagl=driver.find_element(By.MAME,'email') 4.find_element_by_tag.name: 根据标签名来查找元素。等价于:
submitTag=driver.find_element_by._tag.name(‘div')
submitTagl=driver.find_element(By.TAG_MAME,’div’) 5.find_element_by_xpath: 根据xpath来获取元素。等价于:
submitTag =driver.find_element_by_xpath("//div")
submitTag1-driver.find_element(By.XPATH,//div") 6.find_element_by_css_selector: 根据css选择器选择元素。等价于:
submitTag = driver.find_element_by_css_selector("//div')
submitTag1 = driver.find_element(By.CSS_SELECTOR,"//div") 注意:
1.如果只是想要解析网页中的数据,那么推荐将网页源代码扔给lxml解析。因为lxml底层使用的是C语言,所以解析效率会更快
2.如果是想要对元素进行一些操作,比如给一个文本框输入值,或者是点击某个按钮,那么久必须使用selenium给我们提供的查找元素的方法。 三、常见表单元素 :
1.input type='text/password/email/number'
2.button input[type='submit']
3.checkbox input[type='checkbox']
4.select: 下拉列表 操作表单元素:
1.操作输入框:分为两步。第一步:找到这个元素。第二步:使用send_keys(value),将数据填充进去。示例代码如下:
inputTag = driver.find_element_by_id("kw")
inputTag.send_keys('python")
使用clear方法可以清除输入框中的内容。示例代码如下:
inputTag.clear() 2.操作checkbox:因为要选中checkbox标签,在网页中是通过鼠标点击的。因此想要选中checkbox标签,那么先选中这个标签,然后执行click事件。示例代码如下:
rereaberTag = adriver.find_element_by_name("resemberMe")
rereaberTag.click() #执行鼠标点击 (选择) 取消选择在调用一次就行 3.选择select:select元素不能直接点击。因为点击后还需要选中元素。这时候selenium就专门为select标签提供了一个类selenium.webdriver.support.ui.Select。将获取到的元素当成参数传到这个类中,创建这个对象。以后就可以使用这个对象进行选择了。示例代码如下:
from selenium.webdriver.support.ui import Select
#选中这个标签,然后使用Select创建对象
selectTag=Select(driver.find_element_by_name("jumpHenu"))
#根据索引选择
selectTag.select_by_index(1)
#根据值选择
selectTag.select_by_value("http://www.95yueba.com")
#根据可视的文木选择
selectTag.select_by_visible_text("95秀客户端")
#取简选中所有选项
selectTag.deselect_all() 四、行为链
有时候在页面中的操作可能要有很多步,那么这时候可以使用鼠标行为链类 ActionChains来完成。比如现在要将鼠标移动到某个元素上并执行点击事件。那么示例代码如下:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #导入行为链
driver_path = r"D:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
driver = webdriver.Chrome(executable_path=driver_path)
driver.get("https://www.baidu.com/") inputTag = driver.find_element_by_id('kw') #选中输入框标签
submitBtn = driver.find_element_by_id('su') #点击按钮 (百度一下按钮) actions = ActionChains(driver) #创建一个行为链对象
actions.move_to_element(inputTag) #鼠标移到输入框
actions.send_keys_to_element(inputTag,'python') #输入键值
actions.move_to_element(submitBtn) #点击提交
actions.perform() #執行 行为链 #更多鼠标相关操作:
click_and_hold(element) 点击但不松开鼠标
context_click(element) 右击
double_click(element) 双击 五、cookie操作:
# 1.获取所有的 cookie:
for cookie in driver.get_cookies():
print(cookie)
# 2.根据cookie的key获取value:
value = driver.get(cookie(key)
# 3.删除所有的cookie:
driver.delete_all_cookies())
# 4.删除某个 cookie:
driver.delete_cookie(key) 六、页面等待:
现在的网而越来越多采用了Ajax技术,这样程序便不能确定何时某个元素完全加载出来了。如果实际页面等待时间过长导致某个dom元素还没出来,但是你的代码直接使用了这个WebElement,那么就会抛出NullPointer的异常。为了解决这个问题。所以Selenium提供了两种等待方式:一种是隐式等待、一种是显式等待。 1.隐式等待(获取一个不存在的元素时,给定一个确切的时间(指定时间)):调用driver.implicitly_wait。那么在获取不可用的元素之前,会先等待10秒中的时间。示例代码如下:
driver = webdriver.Chrome(executable_pathedriver_path)
driver.implicitly_wait(16)
#请求网页
driver.get("https://www.douban.com/") 2.显示等待:显示等待是表明某个条件成立后才执行获取元素的操作。也可以在等待的时候指定一个最大的时间,如果超过这个时间那么就抛出一个异常。显示等待应该使用selenium.webdriver.support.excepted.conditions 期望的条件和selenium.webdriver.support.ui.webDriverwait来配合完成。示例代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverwait
from selenium.webdriver.support import expected_conditions as EC driver_path = r"D:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
driver = webdriver.Chrome(executable_path=driver_path)
driver.get("http://somedomain/url_that_delays_loading")
try:
element=WebDriverWait(driver,10).until( #最多等待10秒 知道until中的元素By.ID出现
EC.presence_of_element_located((By.ID,"myDynamicElement"))
)
finally:
driver. quit()
selenium笔记(1)的更多相关文章
- Python+Selenium笔记(九):操作警告和弹出框
#之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用) 改成 driver.switch_to.alert就不会了. (一 ...
- Python+Selenium笔记(一):环境配置+简单的例子
#环境配置基于windows操作系统 #学习selenium要有一些HTML和xpth的基础,完全不会的建议先花点时间学点基础(不然元素定位,特别是xpth可能看的有点懵) #HTML : http ...
- Selenium 笔记
1. 截屏:get_screenshot_as_file(“C:\\b1.jpg”) 2. 退出:(1).close----关闭当前窗口 (2).quit()-----用于结束进程,关闭所有的窗口 一 ...
- Python+Selenium笔记(十八):持续集成jenkins
(一)安装xmlrunner 使用Jenkins执行测试时,测试代码中会用到这个模块. pip install xmlrunner (二)安装jenkins (1) 下载jekins https: ...
- Python+Selenium笔记(十七):操作cookie
(一)方法 方法 简单说明 add_cookie(cookie_dict) 在当前会话中添加cookie信息 cookie_dict:字典,name和value是必须的 delete_all_cook ...
- Python+Selenium笔记(十六)屏幕截图
(一) 方法 方法 简单说明 save_screenshot(filename) 获取当前屏幕截图并保存为指定文件 filename:路径/文件名 get_screenshot_as_base64 ...
- Python+Selenium笔记(十五)调用JS
(一) 方法 方法 简单说明 execute_async_script(script, args) 异步执行JS代码 script:被执行的JS代码 args:js代码中的任意参数 execute_s ...
- Python+Selenium笔记(十四)鼠标与键盘事件
(一) 前言 Webdriver高级应用的API,允许我们模拟简单到复杂的键盘和鼠标事件,如拖拽操作.快捷键组合.长按以及鼠标右键操作,都是通过使用webdriver的Python API 中的Ac ...
- Python+Selenium笔记(十三):Page Object设计模式
(一) 前言 简单的说就是分为2层,页面class 和测试class. 页面class:分为父类和子类(子类指具体的页面,每一个页面都创建一个类),父类中定义公有的属性和方法(操作). #对面向对象有 ...
随机推荐
- java的三大特征:封装,继承和多态
有点递进关系,继承增加了代码的复用性,多态必须基于继承才可以实现. 一.封装 使用原因:当我们没有为类进行封装的时候,类中定义的属性可以被外界随意访问,这样容易造成一些合法性的问题.封装可以非常好的解 ...
- Nacos环境搭建
先去下载↓↓↓↓ https://github.com/alibaba/nacos/releases 单机版 单机版主要为了测试,没啥意思,你下载一个zip包,然后解压,进入bin目录,双击 star ...
- 请求转发 和 URL 重定向
五 请求转发 和 URL 重定向 1 请求转发和重定向 干什么用? 是我们在java后台servlet中 由一个servlet跳转到 另一个 servlet/jsp 要使用的技术 前端发送请求到后台 ...
- netty的基本介绍
一.什么是netty?为什么要用netty netty是jboss提供的一个java开源框架,netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可用性的网络服务器和客户端程 ...
- 《Java》第五周学习总结20175301
https://gitee.com/ShengHuoZaiDaXue/20175301.git 本周我学习了第六章的内容接口 重要内容有 理解接口 接口参数 面向接口编程 abstract类与接口的比 ...
- Swift PlayGround无限Running问题
这个问题我想肯定很多人都有遇到过,如果你正好面试iOS,用这个playground写算法的话遇到这种情况只能hehe了-- 我是这样解决的,一开始我build project的时候选得是iOS的pla ...
- vm—win7
- Python+Selenium+Unittest框架使用——Selenium——模拟操作浏览器(三)
1.浏览器大小的控制 Set_window_size()是控制浏览器大小 Maximize_window()浏览器全屏显示 from selenium import webdriver #导入sele ...
- CentOS7 安装Python
CentOS7 安装Python 1. 前置条件 centos7 安装时 勾选Development Tools,如果你centos7没有选,需要更多必要库 必要库 # yum -y install ...
- NBIoT三种部署方式【转】
转自:https://472880.kuaizhan.com/89/34/p441944286fccf2 本文作者:吴老司撩通信 本文来源:EETOP NB-IoT支持在频段内(In-Band).保护 ...