Java 我们可以在Selenium中声明具有多个引用的元素吗?
在我当前的框架(Cucumber、SeleniumWebDriver、PageObject)中,我们声明的元素如下 CreateProfile.java//文件名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");
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}\'']"
这对我来说就像预期的那样。。谢谢你这对我来说就像预期的一样。。非常感谢。