我正在使用Selenium来测试一个网站,如果我通过多个标准查找和元素,这是否有效?例如:
driverChrome.findElements(By.tagName("input").id("id_Start"));
或
driverChrome.findElements(By.tagName("input").id("id_Start").className("blabla"));
答案 0 :(得分:6)
不,不。你不能连接/添加这样的选择器。无论如何这都无效。但是,您可以编写选择器,以覆盖所有方案并将其与findElements()
By byXpath = By.xpath("//input[(@id='id_Start') and (@class = 'blabla')]")
List<WebElement> elements = driver.findElements(byXpath);
这应该会返回一个包含input
个标记的元素列表,这些标记的类名为blabla
或id
id_Start
答案 1 :(得分:3)
要组合By语句,请使用ByChained:
driverChrome.findElements(
new ByChained(
By.tagName("input"),
By.id("id_Start"),
By.className("blabla")
)
)
但是,如果标准涉及相同的元素,请参阅@ Saifur的回答。
答案 2 :(得分:1)
CSS选择器在这种情况下会很完美。
你的例子
By.css("input#id_start.blabla")
如果搜索CSS选择器,有很多信息。此外,在处理类时,CSS比XPath更容易,因为Xpath将类视为文字字符串,而CSS将其视为空格分隔集合