我有一个需要从页面中查找所有iframe和object标记的用例。
目前我使用的是cssSelector()方法。我注意到还有tagName()方法。
这两种方法和上面的用例有什么不同?
发布于 2014-07-08 17:16:01
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循环进行测试
发布于 2014-07-08 17:18:11
建议使用cssSelector/id/xpath/etc ...因为如果元素最初没有出现在页面上,它将等待显示“所需的元素”。
因为By.cssSelector更具体,selenium将继续检查元素是否存在,直到隐式等待(x秒)超时。
By.Tag一点也不具体。使用By.tagName,selenium不会等待元素。在findElements(By.tagName(“表”))上,Selenium将在页面加载后立即返回一个包含所有表的数组。由于“所需”元素还不存在,它将不会出现在数组中。
https://stackoverflow.com/questions/24627880
复制相似问题