java - Seleniun Hashmap(String,WebElement)在传递String时不返回WebElement
问题描述
我编写了一个 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("preferredName") - (参见第二段代码)并检查日志时,打印出来的是:
Str 是:preferredName,而 ele 是:null
objCustomerHistoryMapping = new CustomerHistoryMapping();
WebElement ele = objCustomerHistoryMapping.getValue("preferredName");
logger.info("Str is: preferredName, And ele is: " + ele);
所以 HashMap 中的 WebElement 没有被拉回 - 有什么想法吗?
解决方案
您应该添加PageFactory.initElements(...)
以使用页面上的元素初始化您的字段。您可以将其添加为构造函数的最后一行。
除非您已使用initelements
所有字段,否则将引用null
.
推荐阅读
- macos - 如何在 AppleScript 中添加当前月份?
- c - 如何从 getchar fn 读取 2 位整数?
- c++ - 通过 Flutter 从 C++ 插件访问资产
- typescript - Twilio - SMS 西班牙口音
- ssl - 如何在 Postman 中使用自签名证书?
- python - 您如何在 Django 中正确模拟第 3 方模块
- delphi - 如何防止 FastReport 在故意关闭数据集时打开它们?
- r - Sentiment_by 函数
- javascript - 我有一个下拉菜单和两个单选按钮。已选中 Onload 单选按钮“A”。在将下拉值更新为 123 单选按钮 B 时需要检查
- assembly - 手臂组件中的机器代码查找(分支)