Selenium:无法检索存储在Map中的WebElements

时间:2016-09-21 14:08:13

标签: java selenium collections hashmap testng

使用 @FindBy 注释

定义了许多 WebElements
@FindBy(id="Corporate Insiders")
  private static WebElement FS_LvFd_Filers_CorporateInsidersLink;

  @FindBy(id="Companies")
  private static WebElement FS_LvFd_Filers_CompaniesLink;

将这些Web元素存储在地图

private static Map<String, WebElement> FilersClickWebElemnt = new HashMap<String, WebElement>(); 
FilersClickWebElemnt.put(prop.getString("F_CorporateInsiders"),FS_LvFd_Filers_CorporateInsidersLink);
FilersClickWebElemnt.put(prop.getString("F_Companies"),FS_LvFd_Filers_CompaniesLink);

能够通过检查Map ....的大小将所有Web元素成功存储到地图中。

  

但无法执行 .click() .getText()上的操作   检索到的Web元素构成Map FilersClickWebElemnt。

FilersClickWebElemnt.get(Sec_Filers).click();
FilersClickWebElemnt.get(Filers).click();
System.out.println(FilersClickWebElemnt.get(Filers).getText());

甚至尝试过这样做:

 WebElement e = FilersClickWebElemnt.get(Filers); 
                  e.click()

Sec_Filers和Filers是Map中WebElements存储的值的关键,作为参数传递给此函数

使用: Selenium-server-standalone- 2.53.0, Java 1.7, FireFox版本48.0(Gecko驱动程序), Ubuntu 14.04, 与TestNG一起

执行上述操作/代码不会在Eclipse控制台中给出任何错误。

任何人,  请告诉我可能出现的问题或是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

根据您提供的信息,我假设您正在存储Web元素引用但不存储实际的Web元素对象,也就是说,您必须仅在PageFactory.initElements(驱动程序,类);被称为

所以,我建议你在元素

初始化之后将web元素添加到map中