Python:扩展Selenium WebElement类
当我使用Selenium时,我使用Python:扩展Selenium WebElement类,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,当我使用Selenium时,我使用S()函数访问HTML元素,以便获得更简单、更像jQuery的语法: def S(input, t=10): return Wait(driver, t).until(EC.presence_of_element_located((By.CSS_SELECTOR, input))) 使用此选项,您可以获得: S('button').click() 但是Selenium缺少很多jQuery函数,比如.parent(),.val()等等 .parent(
S()
函数访问HTML元素,以便获得更简单、更像jQuery的语法:
def S(input, t=10):
return Wait(driver, t).until(EC.presence_of_element_located((By.CSS_SELECTOR, input)))
使用此选项,您可以获得:
S('button').click()
但是Selenium缺少很多jQuery函数,比如.parent()
,.val()
等等
.parent()
函数可以通过简单调用.find\u element\u by_xpath('..')
进行多填充
因此,我的计划是创建一个新类,通过如下操作继承WebElement
类:
class WebElement2(WebElement):
def parent(self):
return self.find_element_by_xpath('..')
但是,这只能解决第一步,因为在创建替换类后,我必须替换一系列可追溯到以下内容的函数和类:
等待(驱动程序,t.),直到(EC.元素的存在(By.CSS\u选择器,输入))
有人能帮我理解这条路吗?有可能做我想做的事吗?这可以通过创建新类并继承现有类来实现吗
我查看了Selenium文件,到目前为止我得出的结论是:
expected_conditions.py
- class presence_of_element_located
- def _find_element
webdriver.py
- def find_element
- def execute
presence\u of_element\u located
调用\u find\u element
,它调用find\u element
,它调用execute
,然后我就搞不清楚它会做什么
另外,我知道创建一个.parent()
函数会和执行其他操作的现有.parent()
函数冲突。现有的一个可以重命名,因为它只在Selenium内部使用