写点什么

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

作者:虫无涯
  • 2023-04-10
    陕西
  • 本文字数:1415 字

    阅读完需:约 5 分钟

1 先看实例

  • 需求是:打开百度,输入 NoamaNelson 进行搜索

  • 代码实现:


# -*- coding:utf-8 -*-# 作者:NoamaNelson# 日期:2022/5/12# 文件名称:selen_stu.py# 作用:打开百度输入NoamaNelson# 联系:VX(NoamaNelson)# 博客:https://blog.csdn.net/NoamaNelson
from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport 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  # noqafrom .firefox.firefox_profile import FirefoxProfile  # noqafrom .firefox.options import Options as FirefoxOptions  # noqafrom .chrome.webdriver import WebDriver as Chrome  # noqafrom .chrome.options import Options as ChromeOptions  # noqafrom .ie.webdriver import WebDriver as Ie  # noqafrom .ie.options import Options as IeOptions  # noqafrom .edge.webdriver import WebDriver as Edge  # noqafrom .opera.webdriver import WebDriver as Opera  # noqafrom .safari.webdriver import WebDriver as Safari  # noqafrom .blackberry.webdriver import WebDriver as BlackBerry  # noqafrom .phantomjs.webdriver import WebDriver as PhantomJS  # noqafrom .android.webdriver import WebDriver as Android  # noqafrom .webkitgtk.webdriver import WebDriver as WebKitGTK # noqafrom .webkitgtk.options import Options as WebKitGTKOptions # noqafrom .remote.webdriver import WebDriver as Remote  # noqafrom .common.desired_capabilities import DesiredCapabilities  # noqafrom .common.action_chains import ActionChains  # noqafrom .common.touch_actions import TouchActions  # noqafrom .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浏览器引擎
复制代码


发布于: 2023-04-10阅读数: 18
用户头像

虫无涯

关注

专注测试领域各种技术研究、分享和交流~ 2019-12-11 加入

CSDN测试领域优质创作者 | CSDN博客专家 | 阿里云专家博主 | 华为云享专家 | 51CTO专家博主

评论

发布
暂无评论
selenium源码通读·3 | 从源码看引入webdriver包的原因_Python_虫无涯_InfoQ写作社区