在一个类中,我使用 selenium.webdriver 初始化浏览器,并且我想在不同的类中使用相同的已打开的浏览器。所以我想将此网络驱动程序作为参数传递给另一个类中的函数。 然而,无论我如何尝试,PyCharm 都没有给我任何有关此 webdriver 对象的可用方法的提示,即使我提示它确实是来自 selenium 的 webdriver。 我怎样才能正确解决这个问题?我知道我可以初始化一个网络驱动程序,并且在该类的工作结束后我可以将其删除,但这不是我认为正确的解决方案。
我的代码:
from emails import FormalEmailInterface
from selenium import webdriver
class EmailTest(FormalEmailInterface):
def __init__(self, driver: webdriver, url: str):
self.driver = driver
self.url = url
""""Get temporary email address"""
def get_temp_email(self):
# self.driver. <-- NO HINTS HERE!!!
print(type(self.driver))
pass
这些选项中的任何一个都可以解决问题:
from selenium.webdriver.remote.webdriver import WebDriver
class EmailTest(FormalEmailInterface):
def __init__(self, driver: WebDriver, url: str):
self.driver: WebDriver = driver
from typing import Union
from selenium import webdriver
typeWebDriver = Union[webdriver.Firefox,
webdriver.Chrome,
webdriver.Edge,
webdriver.Safari,
webdriver.PhantomJS
]
class EmailTest(FormalEmailInterface):
def __init__(self, driver: typeWebDriver, url: str):
self.driver: typeWebDriver = driver
我的解决方案是导入特定的网络驱动程序,例如Chrome对象,并在驱动器self.driver中设置类型:Chrome,现在我们有webelement方法
from emails import FormalEmailInterface
from selenium import webdriver
from selenium.webdriver import Chrome
class EmailTest(FormalEmailInterface):
def __init__(self, driver: webdriver, url: str):
self.driver: Chrome = driver
self.url = url
""""Get temporary email address"""
def get_temp_email(self):
self.driver.
print(type(self.driver))
pass