selenium笔记(1)

时间:2021-10-15 02:28:08
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)的更多相关文章

  1. Python+Selenium笔记(九):操作警告和弹出框

    #之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用)  改成 driver.switch_to.alert就不会了. (一 ...

  2. Python+Selenium笔记(一):环境配置+简单的例子

    #环境配置基于windows操作系统 #学习selenium要有一些HTML和xpth的基础,完全不会的建议先花点时间学点基础(不然元素定位,特别是xpth可能看的有点懵) #HTML :  http ...

  3. Selenium 笔记

    1. 截屏:get_screenshot_as_file(“C:\\b1.jpg”) 2. 退出:(1).close----关闭当前窗口 (2).quit()-----用于结束进程,关闭所有的窗口 一 ...

  4. Python+Selenium笔记(十八):持续集成jenkins

    (一)安装xmlrunner 使用Jenkins执行测试时,测试代码中会用到这个模块. pip install xmlrunner (二)安装jenkins (1)   下载jekins https: ...

  5. Python+Selenium笔记(十七):操作cookie

    (一)方法 方法 简单说明 add_cookie(cookie_dict) 在当前会话中添加cookie信息 cookie_dict:字典,name和value是必须的 delete_all_cook ...

  6. Python+Selenium笔记(十六)屏幕截图

    (一) 方法 方法 简单说明 save_screenshot(filename)   获取当前屏幕截图并保存为指定文件 filename:路径/文件名 get_screenshot_as_base64 ...

  7. Python+Selenium笔记(十五)调用JS

    (一) 方法 方法 简单说明 execute_async_script(script, args) 异步执行JS代码 script:被执行的JS代码 args:js代码中的任意参数 execute_s ...

  8. Python+Selenium笔记(十四)鼠标与键盘事件

     (一) 前言 Webdriver高级应用的API,允许我们模拟简单到复杂的键盘和鼠标事件,如拖拽操作.快捷键组合.长按以及鼠标右键操作,都是通过使用webdriver的Python API 中的Ac ...

  9. Python+Selenium笔记(十三):Page Object设计模式

    (一) 前言 简单的说就是分为2层,页面class 和测试class. 页面class:分为父类和子类(子类指具体的页面,每一个页面都创建一个类),父类中定义公有的属性和方法(操作). #对面向对象有 ...

随机推荐

  1. js中的this指针(二)

    在 js 中声明并定义一个函数后,除了定义时传入的形式参数,函数还会接收到 2 个附加的参数:this 和 arguments. this 指针的值取决于调用时的模式. 当这个函数被保存为对象的一个属 ...

  2. CALayer总结(一)

    1.geometryFlipped   设置为yes,则子图层或者子视图本来相对于左上角放置 改为 相对于左下角放置: 2.contents 3.contentGravity: kCAGravityC ...

  3. OpenWrt网络结构

    原文链接:http://www.freezhongzi.info/?p=104 OpenWrt网络结构 OpenWrt的网络配置很丰富,在我看来几乎可以完成任何网络结构.下图为一个支持OpenWrt的 ...

  4. iOS开发之通知使用总结

    通知中心(NSNotificationCenter) 每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信 任何一个对象都可以向通知中心发 ...

  5. 更新Xcode7 后 .dylib变成了.tbd的问题解决

    拿添加libsqlite3.dylib为例 1.打开你添加的libsqlite3.tbd 文本文件,然后有一行 install-name:    /usr/lib/libsqlite3.dylib   ...

  6. Sass之Compass学习笔记

    compass Compass是Sass的工具库,就好像jQuery是js的库一样. sass有了compass的配合,就会更加事半功倍. Sass本身只是一个编译器,Compass在它的基础上,封装 ...

  7. resin4配置之一个resin下多个app的正确配置方法

    可能是因为resin4出来不久的原因,很多人对一个resin配置多个app不是很了解,经过几个小时的研究,有了一些小的成果,在此分享一下: 在开发的时候很多人习惯了一个resin下配置多个app,习惯 ...

  8. [sqoop] sqoop 小试牛刀

    sqoop 1.4.6  小试牛刀 sqoop import 参数 1. mysql导入 到hdfs中 ./sqoop import --connect jdbc:mysql://mysql:3306 ...

  9. Python3练习题系列(01)

    2018-06-13 题目: 根据用户回答做出相应的判断,完成一个“回答-判断”的小游戏 Python3知识点: if, else, elif 实例代码: print("You enter ...

  10. MySQL学习笔记:生成时间维度表2

    实现目的: 测试: # 测试 加一秒 SECOND), INTERVAL SECOND); SECOND),'%H%i%s');# 第一秒 SECOND),'%H%i%s');# 最后一秒 SELEC ...