有看到大多数 BasePage 封装 selenium 如下:

# 定位元素方法
    def find_element(self, *selector):
        """
        传入元组
        """
        try:
            element = self.driver.find_element(*selector)
            logger.info("通过%s找的元素已被定位 " % str(selector))
            return element
        except NoSuchElementException as e:
            logger.error("找不到元素 %s" % e)

    def find_elements(self, *selector):
        try:
            elements = self.driver.find_elements(*selector)
            logger.info('通过%s找到了%d个元素' % (str(selector), len(elements)))
            return elements
        except NoSuchElementException as e:
            logger.error("找不到元素集合 %s" % e)

    # 点击元素
    def click_element(self, locator:tuple, doc=""):
        ele = self.get_element(locator, doc)
        try:
            ele.click()
        except:
            logger.exception(f"点击元素 {locator} 失败")
            self.save_screenshot(doc)
            raise

显然,这个点击元素的封装只是单个元素的点击,如果某页某元素 A 有多个,要点击第 x 个,这个情况就没有办法满足

如果是以上情况,BasePage 应该如何修改其封装呢?


↙↙↙阅读原文可查看相关链接,并与作者交流