【问题标题】:Python-Generic method to find child of a webelement查找 web 元素的子元素的 Python 通用方法
【发布时间】:2017-12-06 03:06:06
【问题描述】:

我试图在 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.????????

【问题讨论】:

    标签: python selenium-webdriver


    【解决方案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)
    

    附:请注意,要通过 XPath 定位子/后代元素,您需要在表达式的开头添加点以指向当前上下文 (".//tag_name")

    【讨论】:

    • getelementstrategylocator 的元组。 *getelement 表示从 getelement 中提取这两个值
    • 这是一个很棒的解决方案。它对我有用。谢谢@Andersson
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2017-08-26
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    相关资源
    最近更新 更多