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. IOC的理解(转载)

    转载自:https://www.zhihu.com/question/23277575/answer/169698662 要了解控制反转( Inversion of Control ), 我觉得有必要 ...

  2. python第十天

    函数 1.函数:完成特定功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数 在现实中,很多问题要通过一些工具进行处理==>可以将工具提前生产出来,并命名==>通过名字就可以找 ...

  3. 输入法无法切换 win10

    https://jingyan.baidu.com/article/e2284b2b6ea3f8e2e6118d38.html https://jingyan.baidu.com/article/ce ...

  4. GWAS: 阿尔兹海默症和代谢指标在大规模全基因组数据的遗传共享研究

    今天要讲的一篇是发表于 Hum Genet 的 "Shared genetic architecture between metabolic traits and Alzheimer's d ...

  5. numba学习教程

    一.对于python的基础介绍 Python是一种高效的动态编程语言,广泛用于科学,工程和数据分析应用程序..影响python普及的因素有很多,包括干净,富有表现力的语法和标准数据结构,全面的“电池包 ...

  6. linux内核开发入门学习

    1. 目录结构 内核源代码下载 https://www.kernel.org arch目录 arch是architecture的缩写. 内核所支持的每种CPU体系,在该目录下都有对应的子目录.每个CP ...

  7. eclipse搭建elastic-job

    1.官网下载eclipse----面向Java EE企业级开发的Eclipse IDE for Java EE Developers:2.官网下载maven,并配置环境变量---MAVEN_HOME: ...

  8. chrome浏览器开发常用快捷键之基础篇-遁地龙卷风

    1.标签页和窗口快捷键 打开新的标签页,并跳转到该标签页 Ctrl + t 重新打开最后关闭的标签页,并跳转到该标签页 Ctrl + Shift + t 跳转到下一个打开的标签页 Ctrl + PgD ...

  9. hibernate原生sql获取list<T>异常解决

    /** * <p>Title: getbigestMinIntegral</p> * <p>Description: 获取最大的MinIntegral(原则上即最高 ...

  10. noip2018游(AFO)记

    Day 0 到学车了,已经差不多四点了,领完一小袋比赛要用的就匆匆回了宾馆. 话说之前看地图的时候我们的宾馆最远,而且名字听起来并没有怎么高大上, 一看隔壁度豪大酒店就感觉应该比我们的酒店好.然鹅到了 ...