我正在使用webdriver從gmail閱讀郵件,並且在兩者之間敲擊By.id和By.tagname之間的差異。by.id比by.tagname更好嗎?
我想獲得一個「表」,其ID爲「:PG」。所以,我可以
- 要麼使用By.id( 「:PG」)
- 或使用By.tagname( 「表」)並搜索與ID元素:PG
這裏這兩種情況的代碼。
By.id:
WebDriver webDriver = new FirefoxDriver();
webDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
webDriver = webDriver.switchTo().frame("canvas_frame");
WebElement table1 = webDriver.findElement(By.id(":pg"));`
上面的代碼,我直接拿到其中有ID的元素 「:PG」
By.tagname:
WebDriver webDriver = new FirefoxDriver();
webDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
List<WebElement> tables = webDriver.findElements(By.tagName("table"));
for(WebElement table2: tables){
String id = table2.getAttribute("id");
System.out.println("id: "+ id);
if(id != null && id.equals(":pg")){
System.out.println("FOUND IT!!!");
}
}
上面的代碼,我發現所有具有表格標記名的元素,然後查看哪個元素具有標識「:pg」。
這兩個代碼片段基本上都是一樣的,但使用不同的方式(By.id或By.tagname)。但是,使用By.id的代碼的第一部分總是成功,而使用By.tagname的第二部分代碼幾乎總是失敗。 (但它會與額外的等待工作然而)
爲什麼By.id和By.tagname之間的區別?
謝謝, 克里斯。