使用多个条件在Selenium中查找WebElement

时间:2015-05-22 18:20:13

标签: java selenium selenium-webdriver

我正在使用Selenium来测试一个网站,如果我通过多个标准查找和元素,这是否有效?例如:

 driverChrome.findElements(By.tagName("input").id("id_Start"));

driverChrome.findElements(By.tagName("input").id("id_Start").className("blabla"));

3 个答案:

答案 0 :(得分:6)

不,不。你不能连接/添加这样的选择器。无论如何这都无效。但是,您可以编写选择器,以覆盖所有方案并将其与findElements()

一起使用
By byXpath = By.xpath("//input[(@id='id_Start') and (@class = 'blabla')]")
List<WebElement> elements = driver.findElements(byXpath);

这应该会返回一个包含input个标记的元素列表,这些标记的类名为blablaid 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将其视为空格分隔集合