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

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

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

要么

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

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

 By byXpath = By.xpath("//input[(@id='id_Start') and (@class = 'blabla')]") List elements = driver.findElements(byXpath); 

这应该返回一个元素列表,其中包含具有类名blablaid id_Start input标记

要组合By语句,请使用ByChained:

driverChrome.findElements( new ByChained( By.tagName("input"), By.id("id_Start"), By.className("blabla") ) )

但是,如果标准涉及相同的元素,请参阅@ Saifur的答案。

在这种情况下,CSS选择器将是完美的。

你的例子会

 By.css("input#id_start.blabla") 

如果您搜索CSS选择器,有很多信息。 此外,在处理类时,CSS比XPath更容易,因为Xpath将类视为文字字符串,而CSS将其视为空格分隔集合