我尝试在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.????????
答案 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"
)