Selenium库的基本使用

 

  1.基本使用

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait brower = webdriver.Chrome()
try:
brower.get('https://www.baidu.com')
input = brower.find_element_by_id('kw')#查找id为kw的元素
input.send_keys('Python')#向input文本框输入python
input.send_keys(Keys.ENTER)#输入回车
wait = WebDriverWait(brower,10)#等待浏览器加载
wait.until(EC.presence_of_element_located((By.ID,'content_left')))#查找id为content——left的对象
print(brower.current_url)#输出当前的url
print(brower.get_cookies())#输出当前的cookies
print(brower.page_source)#输出当前的网页源码
finally:
brower.close()

  2.声明浏览器对象

from selenium import webdriver

brower = webdriver.Chrome()
brower = webdriver.Firefox()
brower = webdriver.Edge()
brower = webdriver.PhanromJS()
brower = webdriver.Safari()

  3.访问页面

from selenium import webdriver
brower = webdriver.Chrome()
brower.get('https://ww.taobao.com')
print(brower.page_source)
brower.colse()

  4.查找元素

  单个元素

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input_first=browser.find_element_by_id('q')
input_second = browser.find_element_by_css_selector('#q')
input_third = browser.find_element_by_xpath('//*[@id="q"]')
print(input_first,input_second,input_third)
browser.close()

结果:

<selenium.webdriver.remote.webelement.WebElement (session="aafcd8308ef345a4014a0db417267640", element="0.8704970628206692-1")> <selenium.webdriver.remote.webelement.WebElement (session="aafcd8308ef345a4014a0db417267640", element="0.8704970628206692-1")> <selenium.webdriver.remote.webelement.WebElement (session="aafcd8308ef345a4014a0db417267640", element="0.8704970628206692-1")>

from selenium import webdriver from selenium.webdriver.common.by 
import By browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input_first=browser.find_element(By.ID,'q')
print(input_first) browser.close()

结果:
<selenium.webdriver.remote.webelement.WebElement (session="ad3663f850d6c3fd81751c5c8cf45511", element="0.6365953152365587-1")>
 

  多个元素

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
list=browser.find_elements_by_css_selector('.service-bd li')
print(list)
browser.close() from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
list=browser.find_elements(By.CSS_SELECTOR,'.service-bd li')
print(list)
browser.close()

  5.元素交互操作

from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input=browser.find_element_by_id('q')
input.send_keys('iPhone')
time.sleep(1)
input.clear()
input.send_keys('iPad')
button = browser.find_element_by_class_name('btn-search')
button.click()

  6.交互动作

from selenium import webdriver
from selenium.webdriver import ActionChains
brower=webdriver.Chrome()
url="https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
brower.get(url)
brower.switch_to.frame('iframeResult')
source=brower.find_element_by_css_selector('#draggable')
target=brower.find_element_by_css_selector('#droppable')
action=ActionChains(brower)
action.drag_and_drop(source,target)
action.perform()

  7.执行JavaScript

from selenium import webdriver
brower = webdriver.Chrome()
brower.get('https://www.zhihu.com/explore')
brower.execute_script('window.scrollTo(0,document.body.scrollHeight)')
brower.execute_script('alert("To Bottom")')

  8.获取属性

from selenium import webdriver
from selenium.webdriver import ActionChains
brower = webdriver.Chrome()
url='https://www.zhihu.com/explore'
brower.get(url)
logo = brower.find_element_by_id('zh-top-link-logo')
print(logo)
print(logo.get_attribute('class'))

获取:
<selenium.webdriver.remote.webelement.WebElement (session="5578b6070e5cd404d5636c6c15d1062e", element="0.2337143497044789-1")>
zu-top-link-logo

  9.获取文本值

from selenium import webdriver
brower = webdriver.Chrome()
url='https://www.zhihu.com/explore'
brower.get(url)
input=brower.find_element_by_class_name('zu-top-add-question')
print(input.text)

结果:
提问

  10.获取ID,位置,标签名,大小

from selenium import webdriver
brower = webdriver.Chrome()
url='https://www.zhihu.com/explore'
brower.get(url)
input=brower.find_element_by_class_name('zu-top-add-question')
print(input.id)
print(input.location)
print(input.tag_name)
print(input.size)

结果:
0.5790966028649505-1
{'x': 760, 'y': 7}
button
{'height': 32, 'width': 66}

  11.Frame

import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
brower = webdriver.Chrome()
url="https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
brower.get(url)
brower.switch_to.frame('iframeResult')
source=brower.find_element_by_css_selector('#draggable')
print(source)
try:
logo=brower.find_element_by_class_name('logo')
except NoSuchElementException:
print('No Logo')
brower.switch_to.parent_frame()
logo=brower.find_element_by_class_name('logo')
print(logo)
print(logo.text) 结果:
<selenium.webdriver.remote.webelement.WebElement (session="4515a548a628f32ec7ebb86b845cafbc", element="0.47138378750440957-1")>
No Logo
<selenium.webdriver.remote.webelement.WebElement (session="4515a548a628f32ec7ebb86b845cafbc", element="0.590628320406164-2")>
RUNOOB.COM

  12.隐式等待

from selenium import webdriver
brower = webdriver.Chrome()
brower.get('https://www.zhihu.com/explore')
brower.implicitly_wait(10)
input=brower.find_element_by_class_name('zu-top-add-question')
print(input) 结果:
<selenium.webdriver.remote.webelement.WebElement (session="df8f8bebb2cf5356c12442f1bcc5c2f7", element="0.40275892523916035-1")>

  13.显示等待

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
brower = webdriver.Chrome()
brower.get('https://www.taobao.com')
wait=WebDriverWait(brower,10)
input=wait.until(EC.presence_of_element_located((By.ID,'q')))
button=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search')))
print(input,button) 结果:
<selenium.webdriver.remote.webelement.WebElement (session="036c1bc8fad6ee8e9ee42266ce163be7", element="0.8588910449888032-1")> <selenium.webdriver.remote.webelement.WebElement (session="036c1bc8fad6ee8e9ee42266ce163be7", element="0.8588910449888032-2")>

  14.前进后退

from selenium import webdriver
import time
brower = webdriver.Chrome()
brower.get('https://www.baidu.com')
brower.get('https://www.taobao.com')
brower.get('https://www.python.org')
brower.back()
time.sleep(1)
brower.forward()
brower.close()

  15.Cookies

from selenium import webdriver
brower = webdriver.Chrome()
brower.get('https://www.zhihu.com/explore')
print(brower.get_cookies())
brower.add_cookie({'name':'name','domain':'www.zhihu.com','value':'germey'})
print(brower.get_cookies())
brower.delete_all_cookies()
print(brower.get_cookies())

  16.选项卡管理

import time
from selenium import webdriver brower = webdriver.Chrome()
brower.get('https://www.baidu.com')
brower.execute_script('window.open()')
print(brower.window_handles)
brower.switch_to_window(brower.window_handles[1])
brower.get('https://www.taobao.com')
time.sleep(1)
brower.switch_to_window(brower.window_handles[0])
brower.get('https://www.python.org')

结果:
['CDwindow-4971CB8E7903DFAE9CBA82A6A5F05DB2', 'CDwindow-652D8829B41E67E7F7E8C2E146F8C353']

  17.异常处理

from selenium import webdriver
brower=webdriver.Chrome()
brower.get('https://www.baidu.com')
brower.find_element_by_id('hello')
from selenium import webdriver
from selenium.common.exceptions import TimeoutException,NoSuchElementException
brower=webdriver.Chrome()
try:
brower.get('https://www.baidu.com')
except TimeoutException:
print('Time Out')
try:
brower.find_element_by_id('hello')
except NoSuchElementException:
print('No Element')
finally:
brower.close() 结果:
No Element

Selenium 库的基本用法的更多相关文章

  1. python爬虫---selenium库的用法

    python爬虫---selenium库的用法 selenium是一个自动化测试工具,支持Firefox,Chrome等众多浏览器 在爬虫中的应用主要是用来解决JS渲染的问题. 1.使用前需要安装这个 ...

  2. PYTHON 爬虫笔记七:Selenium库基础用法

    知识点一:Selenium库详解及其基本使用 什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium ...

  3. python爬虫---从零开始(六)Selenium库

    什么是Selenium库: 自动化测试工具,支持多种浏览器.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera ...

  4. Python Selenium库

    Selenium库 自动化测试工具,支持多种游览器 爬虫中主要用来解决JavaScript渲染的问题 安装Selenium pip3 install selenium 安装游览器驱动 下载驱动地址:h ...

  5. 为采集动态网页安装和测试Python Selenium库

    1. 引言上一篇<为编写网络爬虫程序安装Python3.5>中测试小例子对静态网页做了一个简单的采集程序,而动态网页因为需要动态加载js获取数据,所以使用urllib直接openurl已经 ...

  6. c/c++ 重载运算符 标准库function的用法

    重载运算符 标准库function的用法 问题:int(int, int)算不算一种比较通用的类型?? 比如函数: int add(int a, int b); 比如lambda:auto mod = ...

  7. python利用selenium库识别点触验证码

    利用selenium库和超级鹰识别点触验证码(学习于静谧大大的书,想自己整理一下思路) 一.超级鹰注册:超级鹰入口 1.首先注册一个超级鹰账号,然后在超级鹰免费测试地方可以关注公众号,领取1000积分 ...

  8. Python爬虫入门之Urllib库的高级用法

    1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...

  9. Python爬虫Urllib库的高级用法

    Python爬虫Urllib库的高级用法 设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Head ...

随机推荐

  1. TCP的三次握手和四次挥手和UDP协议

    目录 TCP 三次握手 四次挥手 为什么建立连接是三次而断开连接是四次呢? TCP和UDP的区别 TCP数据包的封装 UDP数据包封装 SCTP SYN Flood泛洪攻击 TCP TCP(Trans ...

  2. 逆向 stdio.h 函数库 fseek 函数(调试版本)

    0x01 fseek 函数 函数原型:int fseek(FILE *stream, long int offset, int whence) 函数功能:设置流 stream 的文件位置为给定的偏移 ...

  3. Win64 驱动内核编程-27.强制读写受保护的内存

    强制读写受保护的内存 某些时候我们需要读写别的进程的内存,某些时候别的进程已经对自己的内存读写做了保护,这里说四个思路(两个R3的,两个R0的). 方案1(R3):直接修改别人内存 最基本的也最简单的 ...

  4. Intel汇编语言程序设计学习-第六章 条件处理-下

    6.6  应用:有限状态机 这个东西说了半天,感觉就是把逻辑弄得跟有向图一样,没看出来什么高端的东西,下面就整理下书上说的概念: 有限状态机(FSM,Finite-State Machine)是依据输 ...

  5. [CTF]Rabbit加密

    [CTF]Rabbit加密 ---------------------  作者:adversity`  来源:CSDN  原文:https://blog.csdn.net/qq_40836553/ar ...

  6. 快速运行cmd

    方法一 运行 windows+r 输入cmd 指定要手动输入cd ...... 方法二 文件地址栏 在指定路径在文件地址栏前面输入cmd 方法三 shift+鼠标右键 打开到指定文件夹,shift+鼠 ...

  7. 如何在centos上配置802.1Q VLAN标记,linux单网卡多vlan多网段Ip配置案例

    介绍 VLAN使将大型网络分成较小且易于管理的网络成为可能.802.1Q是所有供应商都在其网络设备中实施的标准.某些交换机能够将多个VLAN分配给单个网络端口.使用此功能,您可以将多个VLAN分配给单 ...

  8. Java中如何保证线程顺序执行

    只要了解过多线程,我们就知道线程开始的顺序跟执行的顺序是不一样的.如果只是创建三个线程然后执行,最后的执行顺序是不可预期的.这是因为在创建完线程之后,线程执行的开始时间取决于CPU何时分配时间片,线程 ...

  9. MySQL慢日志全解析

    前言: 慢日志在日常数据库运维中经常会用到,我们可以通过查看慢日志来获得效率较差的 SQL ,然后可以进行 SQL 优化.本篇文章我们一起来学习下慢日志相关知识. 1.慢日志简介 慢日志全称为慢查询日 ...

  10. Java 在Word中添加数学公式(Latex/MathML)

    本文介绍通过Java程序在Word文档中添加数学公式的方法.添加时,可添加latex数学公式或者MathML数学公式.详细内容见下文. 1. 程序环境 Word测试文档:.docx 2013 Word ...