Python+Selenium教程

这篇具有很好参考价值的文章主要介绍了Python+Selenium教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Selenium是一个用电脑模拟人操作浏览器网页,可以实现自动化。以下是详细教程。

准备工作

1.安装selenium

pip install selenium

或者直接在pycharm中打开项目,点击file—>settings—>Project---->Python Interpreter点击“+”号,在弹出的框框里面输入selenium进行搜索下载安装。参考见下图:
Python+Selenium教程

2.下载浏览器驱动

Firefox浏览器驱动:geckodriver
Chrome浏览器驱动:chromedriver ,CNPM Binaries Mirror (npmmirror.com), taobao备用地址
IE浏览器驱动:IEDriverServer
Edge浏览器驱动:MicrosoftWebDriver
Opera浏览器驱动:operadriver
PhantomJS浏览器驱动:phantomjs
我使用的是谷歌浏览器,因此我下载的是ChromeDriver,需要将下载的压缩包放到pyhton项目下的\venv\Scripts目录下,例如我的放置路径为:F:\hf\pythonProject2\venv\Scripts
注意
随着浏览器的更新,对应的webdriver也应该随着一起更新,否则无法正常使用。更新webdriver就是再从官网上下载对应你浏览器版本的webdriver,再次解压,按照上述操作再进行一次就OK啦。

3.测试执行

执行下述代码可测试执行:

from selenium import webdriver


driver = webdriver.Firefox()   # Firefox浏览器
# driver = webdriver.Firefox("驱动路径")

driver = webdriver.Chrome()    # Chrome浏览器

driver = webdriver.Ie()        # Internet Explorer浏览器

driver = webdriver.Edge()      # Edge浏览器

driver = webdriver.Opera()     # Opera浏览器

driver = webdriver.PhantomJS()   # PhantomJS

# 打开网页
driver.get(url) # 打开url网页 比如 driver.get("http://www.baidu.com")

Python+Selenium教程
出现上图,运行代码使有网页弹出,证明配置成功。如果出现弹出的网页一闪而过的现象,先不要慌,这可能是你的elenium版本过高的原因,不妨试试下载一个较低的selenium版本,再次进行测试。本人用的是4.1.1版本的,不会出现闪退现象。

元素定位

#提前导包
from selenium.webdriver.common.by import By
find_element_by_id()
# 新的写法
find_element(by=By.ID,value="")
find_element_by_name()
# 新的写法
find_element(by=By.NAME,value="")
find_element_by_class_name()
# 新的写法
find_element(by=By.CLASS_NAME,value="")
find_element_by_tag_name()
# 新的写法
find_element(by=By.TAG_NAME,value="")
find_element_by_link_text()
# 新的写法
find_element(by=By.LINK_TEXT,value="")
find_element_by_partial_link_text()
# 新的写法
find_element(by=By.PARTIAL_LINK_TEXT,value="")
find_element_by_xpath()
# 新的写法
find_element(by=By.XPATH,value="")
find_element_by_css_selector()
# 新的写法
find_element(by=By.CSS_SELECTOR,value="")

element变成elements就是找所有满足的条件,返回数组。

想要使用Xpath直接在浏览器中复制即可,详细见下图:
Python+Selenium教程

控制浏览器操作

控制浏览器窗口大小

driver.set_window_size(480, 800)

浏览器后退前进

# 后退 
driver.back()

# 前进 
driver.forward()

浏览器刷新

driver.refresh() # 刷新

Webelement常用方法

点击和输入

driver.find_element_by_id("kw").clear() 
# 清楚文
driver.find_element_by_id("kw").send_keys("selenium")
 # 模拟按键输入 
 driver.find_element_by_id("su").click() 
 # 单机元素

提交

可以在搜索框模拟回车操作

search_text = driver.find_element_by_id('kw') search_text.send_keys('selenium') search_text.submit()

其他

size: 返回元素的尺寸。

text: 获取元素的文本。

get_attribute(name): 获得属性值。

is_displayed(): 设置该元素是否用户可见。

鼠标操作

在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。

ActionChains 类提供了鼠标操作的常用方法:

perform(): 执行所有 ActionChains 中存储的行为;
context_click(): 右击;
double_click(): 双击;
drag_and_drop(): 拖动;
move_to_element(): 鼠标悬停。
例如:

from selenium import webdriver
# 引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get("https://www.baidu.cn")

# 定位到要悬停的元素
above = driver.find_element_by_link_text("设置")
# 对定位到的元素执行鼠标悬停操作
ActionChains(driver).move_to_element(above).perform()

键盘操作

以下为常用的键盘操作:

send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) 制表键(Tab)
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(Enter)
send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)
send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
send_keys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)
send_keys(Keys.F1) 键盘 F1
……
send_keys(Keys.F12) 键盘 F12

# 输入框输入内容
driver.find_element_by_id("kw").send_keys("seleniumm")
from selenium.webdriver.common.keys import Keys
# 删除多输入的一个 m
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)

获取断言信息

title = driver.title # 打印当前页面title
now_url = driver.current_url # 打印当前页面URL
user = driver.find_element_by_class_name('nums').text # # 获取结果数目

等待页面加载完成

显示等待

显式等待使WebdDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)。

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 = webdriver.Firefox()
driver.get("http://www.baidu.com")

element = WebDriverWait(driver, 5, 0.5).until(
                      EC.presence_of_element_located((By.ID, "kw"))
                      )
element.send_keys('selenium')
driver.quit()

WebDriverWait类是由WebDirver 提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。具体格式如下:

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

driver :浏览器驱动。
timeout :最长超时时间,默认以秒为单位。
poll_frequency :检测的间隔(步长)时间,默认为0.5S。
ignored_exceptions :超时后的异常信息,默认情况下抛NoSuchElementException异常。
WebDriverWait()一般由until()或until_not()方法配合使用,下面是until()和until_not()方法的说明。
until(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为True。
until_not(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为False。
在本例中,通过as关键字将expected_conditions 重命名为EC,并调用presence_of_element_located()方法判断元素是否存在。

隐式等待

如果某些元素不是立即可用的,隐式等待是告诉WebDriver去等待一定的时间后去查找元素。 默认等待时间是0秒,一旦设置该值,隐式等待是设置该WebDriver的实例的生命周期。文章来源地址https://www.toymoban.com/news/detail-458519.html

from selenium import webdriver
driver = webdriver.Firefox()    
driver.implicitly_wait(10) # seconds    
driver.get("http://somedomain/url_that_delays_loading")    
myDynamicElement = driver.find_element_by_id("myDynamicElement") 

到了这里,关于Python+Selenium教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium入门超详细教程——网页自动化操作

    Selenium是广泛使用的模拟浏览器运行的库,它是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,并且支持大多数现代 Web 浏览器。下面就进入正式的学习阶段。 激活虚拟环境 通过pip安装 针对不同的浏览器,需要安装不同的驱动

    2024年02月03日
    浏览(104)
  • Selenium教程__界面的刷新、后退、前进操作(4)

    本文将介绍如何使用Selenium来实现界面的刷新、后退和前进操作,以便于测试、开发人员能够更好地控制和管理用户界面的交互行为。 通过学习本文内容,您将能够掌握Selenium中相关API的使用方法,并能够灵活地应用到您的项目中,从而提升用户体验和系统稳定性。  -事必有

    2024年01月19日
    浏览(41)
  • 如何用 Midjourney 绘制你自己的拟人头像?

    在元宇宙时代,许多人都使用各种AI应用程序来生成他们自己的头像,其中Midjourney是一个非常流行的选择。然而,成功的先行者可能不愿意透露具体的prompt(提示语),因为他们可能担心自己的创意被其他人抄袭。此外,prompt的选择也取决于每个人的具体需求和创意,不同的

    2024年02月09日
    浏览(77)
  • Python+Selenium+Unittest 之selenium13--WebDriver操作方法3-鼠标操作2

            这篇说下ActionChains里常用的几种鼠标操作的方法。 ActionChains常用的鼠标操作方法 click() 鼠标左键单击 double_click() 鼠标左键双击 context_click() 鼠标右键单击 move_to_element() 鼠标移动到某个元素上(鼠标悬浮操作) click_and_hold() 点击鼠标左键,不松开 drag_and_drop() 拖拽到某

    2024年01月22日
    浏览(45)
  • 【python+selenium】键盘操作

    from selenium.webdriver.common.keys import Keys 先根据八大定位方法找到元素:se = driver.find_element(By.ID,“kw”) 1、回车键:se.send_keys(Key.ENTER) 2、删除键:se.send_keys(Key.BACK_SPACE) 3、空格键:se.send_keys(Key.SPACE) 4、制表键:se.send_keys(Key.TAB) 5、回退键:se.send_keys(Key.ESCAPE) 6、刷新键:se.send_k

    2024年02月05日
    浏览(33)
  • 【python+selenium】LOL全英雄全皮肤爬虫--给电脑每天换张壁纸

    很多英雄联盟的元老级玩家都认可 LOL 的美工做得很好,不乏玩家将英雄的皮肤设为手机、电脑的壁纸或个人社交账号的头像。 作为 LOL 发烧友,如果想每天换一张电脑壁纸,该如何爬取 LOL 全英雄的全部皮肤呢?由于皮肤数量过多,最好能按英雄名分文件夹存储,找起来也比

    2024年02月15日
    浏览(49)
  • python的浏览器操作-selenium版本4更新操作

    2.浏览器输入:chrome://version/,获取对应版本号 3.下载驱动器版本 http://chromedriver.storage.googleapis.com/index.html 4.把驱动解压,获取驱动地址 5.0.特别注意点:运行前把执行的浏览器窗口全部关闭 5.0.窗口关闭 5.0.关闭 5.1.使用原来插件的运行cmd运行命令: 5.2.使用新的环境,cmd命令

    2024年02月07日
    浏览(58)
  • Selenium教程__按钮的点击、文本框的输入和清除操作(3)

    使用selenium的 send_keys 方法能够满足大多数情况的输入操作,但是在输入内容很多的情况下,使用该方法会消耗很多时间。 此时可以使用selenium执行js的 innerHTML方法能快速输入内容。 但是使用js的方法输入内容有一定缺陷性,它对常见  input标签类型的输入框无效,因为该js方

    2024年02月16日
    浏览(45)
  • Python爬虫(4)-Selenium模拟鼠标操作

    在Selenium4.2以后的版本里面鼠标的操作方法都封装在了ActionChains中需要时直接取即可。 使用方法就是调用ActionChains然后传入你需要点击的按钮的位置即可 ActionChains(driver).double_click(f1).perform() perform()的意思就是执行所有ActionChains中的动作 具体的操作方法如下 鼠标单击就是直接

    2024年01月19日
    浏览(52)
  • selenium+python操作cookie绕过登录

    selenium操作cookie的方法包括: 获取cookies:get_cookies();获取指定name的cookie值:get_cookie(name);删除所有cookie:delete_all_cookies();删除指定name的cookie值:delete_cookie(name);添加cookie:add_cookie(cookie_dict) 。通常可以使用cookie绕过包含验证码的登录请求,但需要事前先通过抓包等手段获取

    2024年02月15日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包