Python-Generic方法,用于查找webelement的子项

时间:2017-12-05 16:55:34

标签: python selenium-webdriver

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

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.????????

1 个答案:

答案 0 :(得分:1)

我猜您正在搜索已经创建并通过内置函数提供的find_element() / find_elements()方法。您可以按如下方式使用它:

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

您也可以执行from selenium.webdriver.common.by import By并使用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)

P.S。请注意,要通过XPath定位子/后代元素,您需要在表达式的前缀处添加点以指向当前上下文(".//tag_name"