Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:扩展Selenium WebElement类_Python_Selenium_Selenium Webdriver - Fatal编程技术网

Python:扩展Selenium WebElement类

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(

当我使用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()
函数可以通过简单调用
.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内部使用