当我们创建一个Chrome类的对象时,使用以下代码:
#Creating an instance of Chrome class of webdriver module
Chrome_class_object = webdriver.Chrome()
#Printing an Output
print(type(Chrome_class_object))
输出:
<class 'selenium.webdriver.chrome.webdriver.WebDriver'>
我们在输出中看到,该对象属于selenium.webdriver.chrome.webdriver.WebDriver
类,但不是Chrome类,但我们通过webdriver的Chrome类创建了它,因此它应该属于Chrome类。为什么会这样呢?
在selenium库中创建webdriver模块的Chrome类示例
2条答案
按热度按时间flvlnr441#
WebDriver
类是一个泛型类,用作不同浏览器特定实现的基础,例如Chrome
、Firefox
、Edge
等。每个特定于浏览器的实现都扩展了WebDriver类,并提供了自己独特的功能和方法。对于
webdriver.Chrome()
,Chrome
类是WebDriver
的子类,专门为控制Chrome浏览器而定制。它继承了WebDriver
类的所有方法和属性,并添加了特定于Chrome的附加功能。因此,当您打印
Chrome
对象的类型时,它会显示selenium.webdriver.chrome.webdriver.WebDriver
,表明该对象属于Chrome的WebDriver
类。即使您使用
Chrome
类创建了示例,对象的类型也反映了底层实现类,即Chrome
的WebDriver
类。l0oc07j22#
WebDriver是接口,其中作为ChromeDriver实现 WebDriver 类。将 WebDriver 视为一个包含方法 backbone 但没有任何主体的合约。ChromeDriver/GeckoDriver可以根据其标准实现这些方法。
所以你不能创建一个 interface 的对象,而必须从实现 WebDriver 接口的子类创建它。因此,当您:
输出为: