首页 > 编程语言 >selenium源码通读·3 | 从源码看引入webdriver包的原因

selenium源码通读·3 | 从源码看引入webdriver包的原因

时间:2023-01-30 14:04:31浏览次数:38  
标签:webdriver 浏览器 WebDriver driver selenium 源码 import noqa

(·3 | 从源码看引入webdriver包的原因)

1 先看实例

  • 需求是:打开百度,输入NoamaNelson进行搜索
  • 代码实现:
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2022/5/12
# 文件名称:selen_stu.py
# 作用:打开百度输入NoamaNelson
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

driver.find_element_by_id("kw").send_keys("NoamaNelson")
time.sleep(1)
driver.find_element_by_id("kw").send_keys(Keys.ENTER)
driver.maximize_window()
time.sleep(0.5)
driver.quit()

2 提出疑问

  • 为什么需要引入from selenium import webdriver包?
  • 为什么是webdriver.Chrome()
  • 带着这两个问题,我们来分析下

3 为什么引入webdriver包?

  • 因为webdriver中定义各种浏览器的支持 在这里插入图片描述
  • 再看源码路径:Python37\Lib\site-packages\selenium\webdriver\__init__.py
from .firefox.webdriver import WebDriver as Firefox  # noqa
from .firefox.firefox_profile import FirefoxProfile  # noqa
from .firefox.options import Options as FirefoxOptions  # noqa
from .chrome.webdriver import WebDriver as Chrome  # noqa
from .chrome.options import Options as ChromeOptions  # noqa
from .ie.webdriver import WebDriver as Ie  # noqa
from .ie.options import Options as IeOptions  # noqa
from .edge.webdriver import WebDriver as Edge  # noqa
from .opera.webdriver import WebDriver as Opera  # noqa
from .safari.webdriver import WebDriver as Safari  # noqa
from .blackberry.webdriver import WebDriver as BlackBerry  # noqa
from .phantomjs.webdriver import WebDriver as PhantomJS  # noqa
from .android.webdriver import WebDriver as Android  # noqa
from .webkitgtk.webdriver import WebDriver as WebKitGTK # noqa
from .webkitgtk.options import Options as WebKitGTKOptions # noqa
from .remote.webdriver import WebDriver as Remote  # noqa
from .common.desired_capabilities import DesiredCapabilities  # noqa
from .common.action_chains import ActionChains  # noqa
from .common.touch_actions import TouchActions  # noqa
from .common.proxy import Proxy  # noqa
  • 可以看出,如果想支持某个浏览器,就需要selenium\webdriver\浏览器\webdriver
  • __init__.py中将对应的浏览器的webdriver进行了as方法引用

4 为什么是webdriver.Chrome()?

  • 从第三步的分析,我们如果想支持chrome浏览器,源码是
from .chrome.webdriver import WebDriver as Chrome  # noqa
  • 那么直接使用:webdriver.Chrome()即可

5 浏览器支持类型

  • 如果想支持其他浏览器,即:
driver = webdriver.Ie()      # ie支持
driver = webdriver.Firefox() # Firefox支持
driver = webdriver.Edge()    # Edge支持
# 等等
android:android浏览器支持
blackberry:blackberry平台支持
chrome:谷歌浏览器支持
edge:微软edge浏览器支持,一般要windows10及以上
firefox:火狐浏览器支持
ie:ie浏览器支持
opera:opera浏览器支持
phantomjs:内存模式可以渲染解析js、css、html,可以快速运行
safari:apple下的浏览器支持
webkitgtk:WebKitGTK是KDE、Apple、Google等公司共同开发的一套开源的Web浏览器引擎

标签:webdriver,浏览器,WebDriver,driver,selenium,源码,import,noqa
From: https://blog.51cto.com/NoamaNelson/6026262

相关文章

  • selenium源码通读·4 |webdriver/common分析
    (·4|webdriver/common分析)1定义selenium/webdriver/common目录定义了webdriver所指定的通用能力;包括了各种行为控制等,详细后边描述。2common目录包含了actions......
  • selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类分析
    (·5|webdriver/common/action_chains.py-ActionChains类分析)1源码路径selenum/webdriver/common/action_chains.py2功能描述提供鼠标操作,模拟用户的鼠标行为;如......
  • selenium源码通读·6 |webdriver/common/alert.py-Alert类分析
    (·6|webdriver/common/alert.py-Alert类分析)1源码路径selenum/webdriver/common/alert.py2功能描述定义了处理弹窗的能力;如警告框、提示框、确认框等等。3......
  • selenium源码通读·7 |webdriver/common/by.py-By类分析
    (·7|webdriver/common/by.py-By类分析)1源码路径selenium/webdriver/common/by.py2功能描述翻译:一组受支持的定位器策略,即支持的定位方式定位方式包含八种:cla......
  • Selenium简单介绍
    Selenium简单介绍​ Selenium是一个用于Web应用程序测试的工具;Selenium测试直接运行在浏览器中,就像真正的用户在操作一样;支持通过各种driver(FirfoxDriver,IternetExpl......
  • 贪吃蛇游戏源码
      //定义食物类foodclassFood{//定义一个属性表示食物对应的元素element:HTMLElement;constructor(){//获取页面中的food元素并赋值给......
  • USB摄像头驱动实现源码分析
    Spac5xx的实现是按照标准的USBVIDEO设备的驱动框架编写(其具体的驱动框架可参照/usr/src/linux/drivers/usb/usbvideo.c文件),整个源程序由四个主体部分组成:总结送免费学习......
  • Seata源码结构及事务模式介绍
    1.Seata是什么Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式......
  • eureka源码分析环境准备
    一、工具准备:eureka源码,下载地址:https://github.com/Netflix/eureka/tree/v1.7.2;gradle安装配置环境变量,自行百度;IDEA2018.1版本(其他版本不一定兼容)二、......
  • IdentityServer4源码解析_2_元数据接口
    1|0目录IdentityServer4源码解析_1_项目结构IdentityServer4源码解析_2_元数据接口IdentityServer4源码解析_3_认证接口IdentityServer4源码解析_4_令牌发放接口Id......