selenium cssSelector与tagName

时间:2014-07-08 09:08:43

标签: selenium css-selectors

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

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

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

2 个答案:

答案 0 :(得分:2)

findElement(By.tagName("a_tag"))会根据<iframe><div>等html标记找到元素。但是你只能提供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循环来进行测试

答案 1 :(得分:-2)

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

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

By.Tag根本不具体。使用By.tagName,selenium不会等待元素。在findElements(By.tagName(“table”)上,Selenium将返回页面加载后立即出现的所有表的数组。由于“needed”元素尚未出现,因此它不在数组中。 / p>