我有一个用例,我需要从页面中找到所有iframe和object标签。
目前我正在使用cssSelector()
方法。我注意到还有tagName()
方法。
这两种方法与上述用例有什么区别?
答案 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>