python - python selenium 继承 webdriver 方法
问题描述
我一直在寻找一种解决方案来继承 python selenium webdriver 类的方法,以便我可以扩展/修改它的行为。我还没有找到一个工作。
例如,我想继承 chrome webdriver 的所有方法,但扩展 .get() 方法(即加载 url 的方法)。这是我目前的做法:
from selenium import webdriver
from selenium.common.exception import TimeoutException
class CustomDriver:
def __init__(self, browser):
if browser.lower() == 'chrome'
self.driver = webdriver.Chrome()
def get_url(self, url):
try:
self.driver.get(url)
except TimeoutException:
self.driver.quit()
此方法有效,但它不继承一般的 webdriver 方法,如driver.quit()
. 事实上,如果我执行以下操作:
mydriver = CustomDriver('Chrome')
mydriver.quit()
我得到错误:'Custom driver' object has no attribute quit
。你们有什么建议吗?
ps:我是python新手。
解决方案
quit() 来自 webdriver 方法,您正在从 selenium 模块导入它,并且您已经为 webdriver.Chrome() 创建了一个对象 self.driver
所以你不能在创建的类对象上使用 webdriver 方法,这就是你得到 No Attribute Error 的原因:'Custom driver' object has no attribute quit
获得继承的一种方法是在类内部声明相应的方法并在外部继承这些方法。
请参阅此文档:https ://www.geeksforgeeks.org/web-driver-methods-in-selenium-python/
下面是可以工作的代码
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
class CustomDriver:
def __init__(self, browser):
if browser.lower() == 'chrome':
self.driver = webdriver.Chrome()
def exit_browser(self):
self.driver.quit()
def get_url(self, url):
try:
self.driver.get(url)
except TimeoutException:
self.driver.quit()
mydriver = CustomDriver('Chrome')
mydriver.get_url("https://www.google.com/")
mydriver.exit_browser()
推荐阅读
- python - 将整个 Dropbox 驱动器复制到本地计算机
- bash - bash 测试 - 匹配正斜杠
- python-3.x - 在 Pycharm (Windows 10) 中将库添加到 PYTHONPATH
- amazon-web-services - 缺少必填字段 Principal - Amazon S3 - Bucket Policy
- arrays - PHP - 按数组排列的星期几
- xamarin.forms - Xamarin UI 自动化与 Appium - 在 MacBook Pro 上设置 JAVA_HOME - appium-doctor 没有看到
- node.js - 为什么 React 会在构建时更改图像文件扩展名
- javascript - jQuery 按钮 - 隐藏/取消隐藏元素或创建和销毁动态元素?
- mysql - 返回其他表中不存在的记录子集
- angular - 如何通过角度2中的路由器设置特色模块默认登陆组件