使用Selenium Web测试时,有几种方法可以识别WebElement。
根据我的经验,我使用了以下选择器:
By.className()
By.cssSelector()
By.id()
By.linkText()
By.name()
By.tagName()
By.xpath()
显然,当只有一个选项可用于定位元素时,我们必须使用该选项,但是当可以使用多种方法(例如:下面的div)时,应如何确定使用哪种方法呢?是否有比其他选择器 更有效的 选择器?有一些 更耐用 吗?
<div class="class" id="id" name="name">Here's a div</div>
只为s&gs …
我为每个标识符方法计时,它们分别在五个以上的时间上查找div,并平均查找元素的时间。
WebDriver driver = new FirefoxDriver(); driver.get("file://<Path>/div.html"); long starttime = System.currentTimeMillis(); //driver.findElement(By.className("class")); //driver.findElement(By.cssSelector("html body div")); //driver.findElement(By.id("id")); //driver.findElement(By.name("name")); //driver.findElement(By.tagName("div")); //driver.findElement(By.xpath("/html/body/div")); long stoptime = System.currentTimeMillis(); System.out.println(stoptime-starttime + " milliseconds"); driver.quit();
它们按平均运行时间在下面排序。
阅读@JeffC的答案后,我决定将By.cssSelector()classname,tagname和id作为搜索词进行比较。同样,结果如下。
WebDriver driver = new FirefoxDriver(); driver.get("file://<Path>/div.html"); long starttime = System.currentTimeMillis(); //driver.findElement(By.cssSelector(".class")); //driver.findElement(By.className("class")); //driver.findElement(By.cssSelector("#id")); //driver.findElement(By.id("id")); //driver.findElement(By.cssSelector("div")); //driver.findElement(By.tagName("div")); long stoptime = System.currentTimeMillis(); System.out.println(stoptime-starttime + " milliseconds"); driver.quit();
By.cssSelector(".class")
By.className("class")
By.cssSelector("#id")
By.id("id")
By.cssSelector("div")
By.tagName("div")
由此看来,您应该将CSS选择器用于几乎所有可能的操作!