Próbuję sprawdzić, czy istnieje sposób na przekazanie zmiennej z jednego obiektu strony do drugiego? Używam frameworka Serenity BDD w moim projekcie Java. Na jednej stronie tworzę i nazywam element, a następnie przechodzę do innej strony, na której próbuję znaleźć ten element, na przykład w tabeli. Mam problem, w którym zmienna, którą wywołuję na drugiej stronie, ma wartość null .

Każda strona ma własną klasę strony, a oto przykładowy kod:

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;
}

}

Następnym krokiem jest przejście mojego kodu na następną stronę i wywołanie zmiennej saveItemName .

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());

}

}

Kiedy wywołuję page1Steps.getSavedItemName () , która zwraca null . Podejrzewam, że winowajcą może być webdriver podczas przełączania się między stronami wartość zapisana na poprzedniej stronie nie jest dostępna dla nowej strony? Szukasz porady, jak to zrobić z powodzeniem.

0
Bratok17 2 kwiecień 2020, 00:55

3 odpowiedzi

Najlepsza odpowiedź

Z pomocą Johna Fergusona można to łatwo rozwiązać, korzystając z:

     Serenity.setSessionVariable("customerName").to("Jim”);
     String customerName = sessionVariableCalled("customerName”);
0
Bratok17 3 kwiecień 2020, 17:18

Korzystając ze schematu scenariusza, możesz zapamiętać / przypomnieć sobie następujące rzeczy:

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

)

0
globalworming 3 kwiecień 2020, 18:59
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;
}

Twoja metoda ustawiająca nie ma typu zwracanego.

Również w klasie Page2 Twoja metoda nie ma poprawnego podpisu i zwracanego typu. Nie jestem pewien, w jaki sposób nie wystąpił błąd kompilacji.

1
Kovid Mehta 2 kwiecień 2020, 07:01