Java 我们可以在Selenium中声明具有多个引用的元素吗?

Java 我们可以在Selenium中声明具有多个引用的元素吗?,java,selenium,selenium-webdriver,automation,cucumber,Java,Selenium,Selenium Webdriver,Automation,Cucumber,在我当前的框架(Cucumber、SeleniumWebDriver、PageObject)中,我们声明的元素如下 CreateProfile.java//文件名 public class CreateProfile { private static final By FIRST_NAME = By.id("firstNmae"); private static final By LAST_NAME = By.id("lastNmae");

在我当前的框架(Cucumber、SeleniumWebDriver、PageObject)中,我们声明的元素如下

CreateProfile.java//文件名

public class CreateProfile {
    private static final By FIRST_NAME = By.id("firstNmae");
    private static final By LAST_NAME = By.id("lastNmae");
    private static final By CLICK_SUBMIT = By.xpath(".//span[@title='{submit}']");
}
然后是输入和单击图元的方法

我希望像这样传递多个元素引用

private static final By CLICK_SUBMIT = By.xpath(".//span[@title='{form_submit}']") || By.id("submit") ;

如果我想为上述相同元素传递多个元素引用,该怎么办?

您可以使用下面的
css选择器
。它将识别该元素

private static final By CLICK_SUBMIT = By.cssSelector("span[title='{form_submit}'],#submit");

您可以使用以下
css选择器
。它将标识元素

private static final By CLICK_SUBMIT = By.cssSelector("span[title='{form_submit}'],#submit");

您可以在Xpath中使用管道(
|
)使用“或”逻辑:

private static final By CLICK_SUBMIT = By.xpath("//(span[@title='{form_submit}'] | *[@id='submit'])") 

如果您使用的是
FindBy
,您可能也希望看到。

您可以在Xpath中使用“或”逻辑使用管道(
|
):

private static final By CLICK_SUBMIT = By.xpath("//(span[@title='{form_submit}'] | *[@id='submit'])") 

如果您使用的是
FindBy
,您可能也希望看到。

Selenium为此类情况提供了
ByAll
实现
By
。假设您有一个带有
By
s的类:

类MyBys{
通过单击_SUBMIT _By _TITLE=By.xpath(“.//span[@TITLE='{SUBMIT}'])”)公开静态最终结果;
点击提交的公共静态最终结果\u提交者\u ID=By.ID(“提交”);
}
然后你可以这样做:

By mySuperBy=newbyall(MyBys.CLICK_SUBMIT_By_TITLE,MyBys.CLICK_SUBMIT_By_ID);
driver.findElement(mySuperBy).click();

Selenium为此类情况提供了
ByAll
实现
By
。假设您有一个带有
By
s的类:

类MyBys{
通过单击_SUBMIT _By _TITLE=By.xpath(“.//span[@TITLE='{SUBMIT}'])”)公开静态最终结果;
点击提交的公共静态最终结果\u提交者\u ID=By.ID(“提交”);
}
然后你可以这样做:

By mySuperBy=newbyall(MyBys.CLICK_SUBMIT_By_TITLE,MyBys.CLICK_SUBMIT_By_ID);
driver.findElement(mySuperBy).click();

QAF as提供您所需的服务。 你可以参考。代码如下所示:

//if my_ele_loc in properties file
driver.findElement("my_ele_loc").click();

//if my_ele_loc is declared in java
driver.findElement(my_ele_loc).click();
my_ele_loc
可以在定位器存储库外部代码中,也可以在java代码中。它看起来像:

#out side code in property file
my_ele_loc=['id=submit','xpath=.//span[@title=\'{form_submit}\'']

//java code
public static final String my_ele_loc="['id=submit','xpath=.//span[@title=\'{form_submit}\'']"

您需要的是QAF as。 你可以参考。代码如下所示:

//if my_ele_loc in properties file
driver.findElement("my_ele_loc").click();

//if my_ele_loc is declared in java
driver.findElement(my_ele_loc).click();
my_ele_loc
可以在定位器存储库外部代码中,也可以在java代码中。它看起来像:

#out side code in property file
my_ele_loc=['id=submit','xpath=.//span[@title=\'{form_submit}\'']

//java code
public static final String my_ele_loc="['id=submit','xpath=.//span[@title=\'{form_submit}\'']"

这对我来说就像预期的那样。。谢谢你这对我来说就像预期的一样。。非常感谢。