Java.硒如何在xpath中放置非常量变量?

问题描述

我正在使用 Java Selenium。我需要将字符串行 computeEngine.getMachineseries() 从我的 xpath 内的属性中放入。我该怎么做?

 @FindBys({@FindBy(xpath = "//md-option//div[@class='md-text ng-binding'][contains(text(),'"+computeEngine.getMachineseries()+"')]")})
    List<WebElement> seriesOptionNOne;

我不能使用上面的代码,因为这个错误:“属性值必须是常量”。我怎样才能以另一种方式做到这一点?

解决方法

您可以尝试以下解决方案:

String myString = computeEngine.getMachineSeries();
@FindBys({@FindBy(xpath = "//md-option//div[@class='md-text ng-binding'][contains(.,'"+ myString +"')]")})
List<WebElement> seriesOptionNOne;
,

不可能: https://stackoverflow.com/a/10636320/1387701

没有办法动态生成一个字符串 注解。编译器评估注释元数据 编译时的 RetentionPolicy.RUNTIME 注释,但是 GENERIC_GENERATED_NAME 直到运行时才知道。而且你不能用 为 RetentionPolicy.SOURCE 的注释生成的值 因为它们在编译时被丢弃,所以生成的那些 价值永远不会被知道。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...