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