評估長xpath所需時間與短xpath相比有什麼重大區別?例子:
Ex。 是否有使用 By.id("id1")
和
By.Xpath("//*[@id='id1']")
Webdriver Xpath性能
3
A
回答
13
我很高興你問之間
/div[@id = 'id1']/label[contains(text(), 'Hello')/../../descendant::input
和
//input
關於什麼區別之間的性能差異,我找到了答案令人吃驚。
- 短XPath是比長的XPath快,但不是很多
- 在Firefox按名稱搜索是比長的XPath,但爲短的XPath(有時更快)熱死
- 在Internet Explorer更快,通過。名稱是遠比XPath的慢
這似乎在指導西蒙·斯圖爾特一直給人重新面對飛:IE瀏覽器的性能的XPath,所以我把它當作一粒鹽,但在下面的代碼中,它非常一致。
我寫了一個快速測試來說明這一點。它看起來在搜索框上的谷歌
package com.PeterNewhook;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
public class FooTest {
public static void main(String[] args) {
long start;
long end;
WebDriver driver;
String longXpath = "/html/body/span[@id='main']/center/span[@id='body']/center/form/table/tbody/tr/td[2]/div[@class='ds']/input[@name='q']";
String shortXpath = "//input[@name='q']";
String elementId = "q";
System.out.println("Using Firefox driver.");
driver = new FirefoxDriver();
driver.get("http://google.com");
start = System.nanoTime();
driver.findElement(By.xpath(longXpath));
end = System.nanoTime()-start;
System.out.println("The long XPath lookup took " + (double)end/1000000000.0 + " seconds.");
start = System.nanoTime();
driver.findElement(By.xpath(shortXpath));
end = System.nanoTime() - start;
System.out.println("The short XPath lookup took " + (double)end/1000000000.0 + " seconds.");
start = System.nanoTime();
driver.findElement(By.name(elementId));
end = System.nanoTime() - start;
System.out.println("The By.name lookup took " + (double)end/1000000000.0 + " seconds.");
driver.close();
System.out.println("\nUsing Internet Explorer driver.");
driver = new InternetExplorerDriver();
driver.get("http://google.com");
start = System.nanoTime();
driver.findElement(By.xpath(longXpath));
end = System.nanoTime()-start;
System.out.println("The long XPath lookup took " + (double)end/1000000000.0 + " seconds.");
start = System.nanoTime();
driver.findElement(By.xpath(shortXpath));
end = System.nanoTime() - start;
System.out.println("The short XPath lookup took " + (double)end/1000000000.0 + " seconds.");
start = System.nanoTime();
driver.findElement(By.name(elementId));
end = System.nanoTime() - start;
System.out.println("The By.name lookup took " + (double)end/1000000000.0 + " seconds.");
driver.close();
}
}
這使輸出:
使用Firefox的驅動程序。
長XPath查找耗時0.13667022秒。
簡短的XPath查找花費了0.024628577秒。
By.name查找花費了0.025209911秒。
使用Internet Explorer驅動程序。
長XPath查找耗時0.196125248秒。
簡短的XPath查找耗時0.164044262秒。
By.name查找花費了1.005109964秒。
相關問題
- 1. WebDriver:提取Xpath
- 2. selenium webdriver -xpath生成
- 3. Selenium webdriver xpath過濾
- 4. selenium python webdriver xpath error
- 5. xquery與xpath性能
- 6. Watir webdriver行的性能
- 7. IE XPath的Selenium Webdriver - c#
- 8. selenium webdriver中xpath的區別?
- 9. webdriver:獲取元素的xpath?
- 10. selenium webdriver中的動態xpath
- 11. python webdriver:從innerHTML獲取XPATH
- 12. XPath vs DOM的性能
- 13. Selenium 2.0 IE Xpath性能
- 14. XPath性能 - 哪個更好?
- 15. 的XPath性能&版本
- 16. XSLT/Xpath的 - 和功能性能
- 17. xom xpath查詢的性能與jaxp xpath查詢與dom性能的比較
- 18. 獲取Webdriver中元素的所有屬性或xPath
- 19. 硒的webdriver的Xpath與點在屬性名
- 20. 在Selenium WebDriver屬性中使用XPath通配符
- 21. 我怎樣才能在硒的XPath計數的webdriver
- 22. WebDriver可以使用xpath找到元素,Html敏捷包不能
- 23. selenium webdriver Java:提高「if else」性能?
- 24. 硒IDE和硒的webdriver - 性能
- 25. Selenium Webdriver性能與時間的關係
- 26. 硒不能與XPath
- 27. Selenium Webdriver - XPath:如何在xpath中使用'和''或'
- 28. 如何在硒webdriver中找到xpath
- 29. CSS或XPath正則表達式的webdriver
- 30. 如何處理改變xpath,Selenium Webdriver,Java