以登錄頁面密碼框定位為例,講解如何在selenium webdriver中通過by.xpath定位頁面元素,快速獲取元素位置并完成操作。
問題引入:
用Selenium IDE錄制后的腳本如下:
driver.findElement(By.name("pass")).clear();
driver.findElement(By.name("pass")).sendKeys("密碼");
driver.findElement(By.id("passwords")).clear();
driver.findElement(By.id("passwords")).sendKeys("123456");
回放的時(shí)候,頁面非常難定位,需要很長(zhǎng)時(shí)間才能找到密碼框并輸入密碼,如果超時(shí)了找不到會(huì)報(bào)錯(cuò)。
解決方案:
既然有時(shí)候能回放成功,有時(shí)候又找不到頁面元素,那肯定是這個(gè)元素定位不夠準(zhǔn)確,所以在查找的時(shí)候會(huì)消耗很長(zhǎng)時(shí)間,那么通過xpah定位是否可以?
Xpath查找元素對(duì)象時(shí)有這樣一種定位方式,即通過//定位,詳情請(qǐng)參考:http://www.w3school.com.cn/xpath/xpath_syntax.asp
//
從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),而不考慮它們的位置。
比如這里密碼框是輸入框input,想要查找input的位置可以通過//input來實(shí)現(xiàn),如果只是//input則可能會(huì)定位到多個(gè)input元素,此時(shí)需要通過鍵值對(duì)更精確的定位,語法是//input[@key=value],即://input[@name='pass']