【问题标题】:Selenium page object model, how to pass variable from one page class to another?Selenium 页面对象模型,如何将变量从一个页面类传递到另一个页面类?
【发布时间】:2020-04-01 21:55:34
【问题描述】:

我想看看是否有办法将变量从一个页面对象传递到另一个页面对象?我正在为我的 java 项目使用 Serenity BDD 框架。在一个页面上,我正在创建和命名一个项目,然后我转到另一个页面,我试图在其中找到该项目,例如在表格中。我遇到了一个问题,我在第二页上调用的变量是 null

每个页面都有自己的页面类,这是一个示例代码:

public class Page1 extends PageObject{
String itemName;
private String savedItemName;

public String getSavedItemName(){
     return savedItemName;
}

public String createItemAndNameIt(){
     //some action to create an item
     //some action to save the item with a given name
     //assigned from itemName which is fed from environment variable

     savedItemName = itemName;
     return itemName;
}

}

下一步是我的代码进入下一页并调用 savedItemName 变量。

public class Page2 extends PageObject{

Page1 page1Steps = New Page1();
String recoveredItemName;


public void searchForItem{
     //perform some action to get a list of items
     //calling a function that searches page for item
     //which accepts element to search and string to search for
    searchForElement(webElement,page1Steps.getSavedItemName());

}

}

当我调用返回 nullpage1Steps.getSavedItemName() 时。我怀疑罪魁祸首可能是 webdriver 在页面之间切换时保存在上一页中的值对新页面无法访问?寻找有关如何成功执行此操作的任何建议。

【问题讨论】:

    标签: java selenium pageobjects serenity-bdd cucumber-serenity


    【解决方案1】:
    public **String** createItemAndNameIt(){
         //some action to create an item
         //some action to save the item with a given name
         //assigned from itemName which is fed from environment variable
    
         savedItemName = itemName;
         return itemName;
    }
    

    您的 setter 方法没有返回类型。

    同样在 Page2 类中,您的方法没有正确的签名和返回类型。不确定您如何没有收到编译错误。

    【讨论】:

    • 我在 setter 方法和 page2 类中确实有返回时间,这是我的错,当我在问题中在这里输入时错过了它。
    【解决方案2】:

    使用剧本模式时,您可以记住/回忆这些事情:

    actor.remember("itemName", "someItem")
    actor.recall("itemName"
    

    )

    【讨论】:

      【解决方案3】:

      在 John Ferguson 的帮助下,使用以下方法可以轻松解决此问题:

           Serenity.setSessionVariable("customerName").to("Jim”);
           String customerName = sessionVariableCalled("customerName”);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-19
        • 1970-01-01
        • 1970-01-01
        • 2023-01-24
        • 2011-12-04
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        相关资源
        最近更新 更多