[英]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.