繁体   English   中英

硒cssSelector与tagName

[英]selenium cssSelector vs. tagName

我有一个用例,需要从页面中查找所有iframe和对象标签。

目前,我正在使用cssSelector()方法。 我注意到,还有tagName()方法。

这两种方法与上述用例有何区别?

findElement(By.tagName("a_tag"))将通过html标签(例如<iframe><div> findElement(By.tagName("a_tag"))查找元素。 但是您只能为它提供html标签,而不是css类等。

使用findElement(By.cssSelector("a_tag"))您可以找到带有html标签的元素,但也可以提供一个CSS类,例如findElement(By.cssSelector("div.myClass"))

对于您的情况,您可以使用:

List<WebElement> iframes = driver.findElements(By.tagName("iframe"))
List<WebElement> objects = driver.findElements(By.tagName("object"))

然后执行for循环进行测试

建议使用cssSelector / id / xpath / etc ...,因为如果最初页面上不存在该元素,它将等待显示“所需元素”。

因为By.cssSelector更具体,所以selenium将继续检查元素是否存在,直到隐式等待(x秒)超时为止。

By.Tag根本不是特定的。 使用By.tagName,硒将不等待该元素。 在findElements(By.tagName(“ table”)上,Selenium将返回页面加载后立即存在的所有表的数组。由于尚不存在“需要”元素,因此它将不在数组中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM