Seleniun Hashmap (String, WebElement) не возвращает WebElement при передаче String - PullRequest
0 голосов
/ 10 марта 2020

Я написал класс java (CustomerHistoryMapping), который содержит HashMap (String, WebElement), как показано в коде ниже (первый раздел кода). Моя общая цель - иметь возможность использовать данный WebElement, в зависимости от строки, которую я передаю классу HashMap.

package com.xxxxx.data;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import java.util.HashMap;
import java.util.Map;

public class CustomerHistoryMapping {

  @FindBy(xpath = "(//td/span[text()='Preferred Name']/../following-sibling::td[3]/span/span)[1]")
  public WebElement txaNewPreferredNameValue;

  @FindBy(xpath = "(//td/span[text()='Mobile']/../following-sibling::td[3]/span/span)[1]")
  public WebElement txaNewMobileValue;

  @FindBy(xpath = "(//td/span[text()='Email']/../following-sibling::td[3]/span/span)[1]")
  public WebElement txaNewEmailValue;

  @FindBy(xpath = "(//td/span[text()='Mailing Street']/../following-sibling::td[3]/span/span)[1]")
  public WebElement txaNewMailingStreetValue;

  @FindBy(xpath = "(//td/span[text()='Mailing City']/../following-sibling::td[3]/span/span)[1]")
  public WebElement txaNewMailingCityValue;

  @FindBy(xpath = "(//td/span[text()='Mailing Zip/Postal Code']/../following-sibling::td[3]/span/span)[1]")
  public WebElement txaNewMailingPostCodeValue;

  @FindBy(xpath = "(//td/span[text()='Mailing State/Province']/../following-sibling::td[3]/span/span)[1]")
  public WebElement txaNewMailingStateValue;

   Map<String, WebElement> mapping = new HashMap<String, WebElement>();

  public CustomerHistoryMapping() {
    mapping.put("preferredName", txaNewPreferredNameValue);
    mapping.put("mobile", txaNewMobileValue);
    mapping.put("email", txaNewEmailValue);
    mapping.put("address", txaNewMailingStreetValue);
    mapping.put("city", txaNewMailingCityValue);
    mapping.put("postcode", txaNewMailingPostCodeValue);
    mapping.put("state",txaNewMailingStateValue);
  }

  public WebElement getValue(String mapKey) {
    return mapping.get(mapKey);
  }

}

Однако, когда я вызываю getValue ("предпочитаемое имя") - (см. второй фрагмент кода) и проверяю журналы, это то, что напечатано:

Str это: предпочитаемое имя, а ele это: ноль

      objCustomerHistoryMapping = new CustomerHistoryMapping();
      WebElement ele = objCustomerHistoryMapping.getValue("preferredName");
      logger.info("Str is: preferredName, And ele is: " + ele);

То есть WebElement в HashMap не возвращается - есть идеи почему?

1 Ответ

0 голосов
/ 10 марта 2020

Вы должны добавить PageFactory.initElements(...), чтобы инициализировать ваши поля с элементами на странице. Вы можете добавить его в качестве последней строки вашего конструктора.

Если вы не использовали initelements, все ваши поля будут ссылаться на null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...