当前位置: 首页 > 知识库问答 >
问题:

在selenium中尝试使用@FindBy注释时出错

柏麒
2023-03-14

我确实在这里遇到了这个问题,但根据线程“错误消失了,我不知道它是如何修复的”...在selenium中尝试使用@FindBy注释时出错

这是我写的代码。奇怪的是,我已经在page对象类上定义了另一个web元素,它工作得很好。我似乎就是不明白问题出在哪里。我只是在学硒,从来没有遇到过这个问题。我试着在网上搜索答案,但似乎找不到这个特定问题的答案。

这是page对象类中的第一个web元素,它工作得很好。

// Profile button element
@FindBy(xpath="//div[@class='container']//nav//li[2]//a[1]")
@CacheLookup // is used to improve the performance 
static WebElement profileBtn;

使用这个元素(在同一个页面对象类上),我得到“这个位置不允许@FindBy注释”。我尝试重新启动eclipse并清理项目,但它不允许第二个元素。

@FindBy(xpath="//div[@id='stateDropdown-styler']//div[@class='jq-selectbox__trigger']")
@CacheLookup // is used to improve the performance
WebElement clickProvinceDropDownArrow()

共有1个答案

邵毅
2023-03-14

请参见@FindBy注释的定义。它只适用于字段和类,不适用于方法。它减少了要找到元素并将其存储到成员变量中所需编写的代码量。

如果您使用的是page object pattern,那么使用此注释定义一个成员变量。如果您想让这个元素在页面对象之外可用,请实现一个返回这个成员变量的getter方法。

@FindBy(xpath="//div[@id='stateDropdown-styler']//div[@class='jq-selectbox__trigger']")
private WebElement clickProvinceDropDownArrow;

public WebElement getClickProvinceDropDownArrow() {
    return clickProvinceDropDownArrow;
}
 类似资料:
  • 在尝试使用注释时,我的感觉是没有完美的方法来检查元素的存在。 对我来说,使用页面对象的经典定义(例如)比使用更灵活。使用@findby,我总是处理WebElement本身,之前没有机会检查是否存在,对吗? 使用检查页面对象上下文中元素的DOM存在的最佳pratice解决方案是什么?还是为了安全起见,我应该按继续使用

  • 我在一个使用Selenium和C#的自动化项目中工作。我使用Page Object模式定义每个页面(带有它们的定位器),然后在一个测试类中分别定义测试。我有一个Page类,它是页面的基类,我在其中调用:PageFactory.initElements(webDriver,this); 并定义所有页面的通用方法。然后每个页面从page继承,并使用@findby注释定义相应的元素: 添加了一个新的登录

  • 我正在使用改装客户端下载文件,但当有大文件(200 MB)时,它会抛出<code>java.lang.OutOfMemoryError:注释,这是我的下载服务方法 这里是调用代码片段 改装版本= 协同程序版本=

  • 我最近开始使用带有Page对象模式的Selenium2和Page Factory。我使用@FindBy注释声明了WebElements,这些注释在初始化类时由PageFactory初始化。但是,我希望将@findby注释与locators.properties文件一起使用。不幸的是,我似乎无法做到这一点,因为注释被限制为只允许常量表达式。一般来说,这似乎是Java注释的一个限制,但我只是想知道是否

  • 我已经按照这里描述的“测试Spring MVC切片”一节为Spring MVC控制器编写了一个测试类。类如下所示: 当我运行它时,我得到了以下错误: 有人能解释为什么@webmvctest注释对我不起作用吗?

  • 问题内容: 我收到一个元素不可见的错误: 对于运行此代码时的每个find元素行: 页面登录部分的HTML如下所示: 问题答案: Selenium与用户与Web浏览器的交互方式类似。因此,如果您尝试与之交互的html元素不可见,那么最简单的解释是,当您编写硒代码时,您不会像普通用户那样与网页进行交互。 最后,这与网页的html无关,与DOM和元素的hidden属性无关。我建议您下载Firebug或其