当前位置: 首页 > 知识库问答 >
问题:

从设计C#中删除PageFactory

裴金鑫
2023-03-14

我们在C语言中有一个现有的UI自动化框架,根据我们使用PageFactory初始化页面文件中的元素时的知识。最近我读了更多关于这个主题的内容,在C中使用PageFactory似乎没有什么真正的好处,所以我尝试使用字段来重新编写页面。我现在有一个问题,那就是让我的扩展方法发挥作用。

例如:在当前实现中,我有一个如下标识的元素:[FindsBy(How=How.LinkText,Using=“Authenticate”)]私有IWebElement BSHomePageHeader;

    public IWebElement getBstHomePageHeader()
    {
        return BstHomePageHeader;
    }

有一个helper方法可以检查元素在某些情况下是否存在,并且在测试中像这样调用:

家GetBSHomePageHeader()。DoesElementExist()。应()。BeTrue(“用户未被带到主页。”);

“DoesElementExist”方法中的代码应用了5秒钟的等待,持续验证元素。显示检查并忽略NoSuchElementException、ElementNotVisibleExpection和WebDriverTimeoutException。如果在5秒内没有返回元素,则会向主调用返回false,并抛出fluent断言消息。

当我删除PageFactory时,元素现在创建如下(在同一个页面文件中):public IWebElement getBSHomePageHeader=

如果我尝试像下面这样对其应用相同的helper方法,那么代码行的DoesElementExist部分将不再适用。NoSuchElementException直接抛出到我的页面文件中,因此不会返回fluent断言消息。家GetBSHomePageHeader。DoesElementExist()。应()。BeTrue(“用户未被带到主页。”);

在非PageFactory设计中,是否可能不让page类抛出NoTouchElementException,以便测试可以处理失败?

共有2个答案

长孙星汉
2023-03-14

在java中,您将向调用者抛出异常。你能用C语言做到这一点吗?

这看起来可能会有所帮助:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/exceptions/creating-and-throwing-exceptions

附带说明:我们也从代码库中删除了页面工厂容器,它要干净得多。每个页面类都在类的顶部包含自己所需的元素和选择器。我们还注意到容器的陈旧元素异常,即使它设置正确。

关飞翼
2023-03-14

好吧,不管怎样,我想出了一个不同的解决方案。我不确定这是不是最好的,但我相信它会奏效的。在我的页面文件中,我用以下内容查找元素:public IWebElement getBSHomePageHeader=

等待逻辑与之前相同。唯一的另一个变化是我改变了在考试中提问的方式。如果(home.getBSHomePageHeader==null)为false,则现在看起来像这样。应()。BeTrue(“用户未被带到主页。”);测验日志(Status.Pass,“用户在主页上”)

所以,我想我并没有真正回答我自己最初的问题,但这个变通方法似乎奏效了。我们只需要重写一下我们如何提问。

 类似资料:
  • 我正在用C#WPF做一个项目,它包含在一个客户机管理中,在那里我添加了新的客户机,在一个txt文档中有save,我有一个listview,在那里我可以看到所有添加的客户机,但现在我想实现一个delete按钮,在那里我从listview中选择一个客户机,并可以删除它。如果我现在做的正确,如果有人能帮我…,…谢谢。

  • 这是我定义邻接列表的方式:

  • 问题内容: 我正在尝试读取文件,并按特定字段出现的次数对其进行排序。假设我想从日志文件中找出最重复的日期,然后使用uniq -c选项并按降序对其进行排序。像这样的东西 这将产生这样的输出- 第一个字段实际上是计数,这对我来说是个问题..我想从上述输出中获取日期,但我无法获取。我试图使用cut命令并执行此操作 但这只是打印空白…请有人可以帮我确定日期并减少计数。我只想要 谢谢 问题答案: 除非计数中

  • 我用wordpress 4.2.2和woocommerce 2.3.11建立了销售葡萄酒的电子商务。我创建了一个自定义函数,用于在6的倍数上仅使用瓶子结束订单。在此之前,我没有任何问题,但我有两个类别,包装为6瓶,所以我想避免这两个类别将计入数量合计项目购物车。我不是php专家,所以我尝试创建一个函数来检查每个项目是否在类别内,如果属于一个包类别,则减去一个项目。只有当这两个类别中有一个项目时,这

  • 本文向大家介绍从C#中的LinkedList中删除指定的节点?,包括了从C#中的LinkedList中删除指定的节点?的使用技巧和注意事项,需要的朋友参考一下 要从LinkedList中删除指定的节点,代码如下- 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-

  • 用于从不存在的VM中删除磁盘的所有在线说明都与旧的Azure UI有关,该UI不包含与新门户相同的菜单命令。因此,我需要使用新的Azure管理门户删除孤立磁盘的说明。旧门户的说明对此操作毫无价值。