跟踪指向更新列表的类实例

时间:2019-09-18 13:11:26

标签: python selenium oop design-patterns

我也是stackoverflow和OOP的新手,

问题:我有一个类TrackList,该类应该跟踪Element的实例。 Element是一个类,该类使用webdriver基于索引查找列表的项目。该列表有一个项目列表[0]。

class TrackList():
  def __init__(self):
    self.instance_list = {}

  def element_instance(self, index):
    if index not in self.instance_list:
      self.instance_list[index] = Element(index)
    return self.instance_list[index]

class Element():
  def __init__(self, index):
    self.index = index

  def _web_driver_search(self):
    #find a node based on the index provided i.e.
    driver.find_element(By.XPATH, f'//li[text()="{self.index}"]')
    print("new element found")

  ...

现在让我们假设列表已更新,因此list [0] = list [1]中的对象和一个新对象成为list [0]。不幸的是,由于instance_list [0]存在,当前的实现仍会返回旧对象。如何实现instance_list [0]指向新对象,instance_list [1]指向旧对象?我是否缺少某些东西或设计模式有误?

1 个答案:

答案 0 :(得分:0)

instance_list = {}创建一个空的dict(字典/地图),而不是列表,因此如果您要使用的是instance_dict会更清楚。

听起来您想改用stack,但是我不能肯定地说不知道Web驱动程序列表如何工作。

如果在Web驱动程序添加另一个元素时索引的含义发生了变化,则不存储索引,只需通过索引从array获取该元素。再次,我取决于Web驱动程序的功能,您需要模仿该行为。