Я написал класс 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 не возвращается - есть идеи почему?