查找webelement子元素的Python通用方法

查找webelement子元素的Python通用方法,python,selenium-webdriver,Python,Selenium Webdriver,我试图在python中创建一个通用方法,使用任何定位器策略查找webelement的子元素。目前我有下面的代码,请在下面的代码中帮助完成getchildobject方法。此方法应该能够找到具有任何定位器(如xpath、css或id等)的webelement的子元素 getelement="xpath=//div[@id='test']" def get_webelement_Cus(locator): strategy=locator.split("=")[0] locator

我试图在python中创建一个通用方法,使用任何定位器策略查找webelement的子元素。目前我有下面的代码,请在下面的代码中帮助完成getchildobject方法。此方法应该能够找到具有任何定位器(如xpath、css或id等)的webelement的子元素

getelement="xpath=//div[@id='test']"
def get_webelement_Cus(locator):

    strategy=locator.split("=")[0]
    locator=locator.replace(locator.split("=")[0]+"=","")
    if strategy.uppercase()=='XPATH':
        return driver.find_elements_by_xpath(locator)
    elif strategy.uppercase()=='CSS': 
        return  driver.find_element_by_css_selector(locator)
    else:
        return None


def getchildobject(webelement,locator):
    webelement.????????

我猜您正在搜索
find_element()
/
find_elements()
方法,该方法已创建并可通过内置程序使用。您可以按如下方式使用它:

getelement = "xpath", "//div[@id='test']"
element = driver.find_elements(*getelement)
您还可以通过导入selenium.webdriver.common.by执行
,并通过
类使用
的属性:

getelement = By.XPATH, "//div[@id='test']"
getelement = By.TAG_NAME, "div"
getelement = By.CSS_SELECTOR, "div#test"
...
以同样的方式,您可以找到子元素:

getelement = "xpath", "//div[@id='test']"
childelement = "xpath", ".//div[@id='child id']"
element = driver.find_elements(*getelement)
child = element.find_elements(*childelemen)

注意,要通过XPath定位子元素/子元素,您需要在表达式的边缘添加点以指向当前上下文(
“//tag_name”

getelement
策略
定位器
的元组
*getelement
意味着从
getelement
中提取这两个值,这是一个很棒的解决方案。这对我有用。谢谢@Anderson