如何在 Selenium 中为跨度文本使用 @FindBy 注释?

How to use @FindBy annotation in Selenium for span text?

我想知道如何获取带@FindBy 注释的 span 元素中的 "Apple" 文本。

那就是 html 代码:

<span class="ui-cell-data">Apple</span>

我试过类似的东西:

@FindBy(className = "ui-cell-data:Samsung")
WebElement customerName;

但是没用!

您可以像链式元素查找一样使用@FindBys

@FindBys({@FindBy(className = "ui-cell-data")})
private WebElement element;

或尝试使用以下方法:

@FindBy(xpath = "//*[@class = 'ui-cell-data']")
private WebElement element;

@FindBy(css = ".ui-cell-data")
private WebElement element; 

希望它能解决您的问题。

您可以尝试使用下面所述的 xpath

 @FindBy(xpath = "//span[@class = 'ui-cell-data']") 
 private WebElement element;

根据您分享的 HTML,您 may/maynot 已经能够在 span 元素中获得 Apple 文本:

@FindBy(className = "ui-cell-data")
WebElement customerName;

您的代码近乎完美,但 className 中的尾部部分 :Samsung 是不必要的。

但是,再次查看 class 属性,预计会有更多 <span> 标签具有相同的 class .因此,为了唯一地标识预期的 WebElement 我们需要引用父节点并跟随其后代到达该特定节点。

最后,使用给定的 HTML,以下代码块将更加清晰:

  • cssSelector:

    @FindBy(cssSelector = "span.ui-cell-data")
    WebElement customerName;
    
  • xpath:

    @FindBy(xpath = "//span[@class='ui-cell-data']")
    WebElement customerName;