我有一个问题,
我试图按照本书的第5章" sbt in Action" 我有一个问题,我不明白什么是错的......
这是我的SeleniumSpec.scala
app.controller('mainCtrl', function($scope, dataService){
$scope.test_button = function(){
dataService.getData().then(function(data){ //success function
$scope.test = data;
},function(error){ //error function
console.log(error);
})
}
});
当我执行测试时,我有这个错误:
package org.preownedkittens;
import org.scalatest._
import org.scalatest.matchers.ShouldMatchers
import org.scalatest.events._
import org.scalatest.selenium._
import org.openqa.selenium.WebDriver
import org.scalatest._
import org.scalatest.matchers.ShouldMatchers
import org.scalatest.events._
import org.scalatest.selenium._
import org.scalatest.junit._
import org.openqa.selenium.WebDriver
class SeleniumSpec extends FlatSpec with ShouldMatchers with BeforeAndAfter with BeforeAndAfterAll with Chrome {
val homePage: String = "http://localhost:9000"
"Home page" should "redirect to kitten list" in {
go to "http://localhost:9000"
currentUrl should startWith ("http://localhost:9000/kittens")
}
it should "show three dropdown lists of attributes in sorted order" in {
def select(name: String) = findAll(xpath("//select[@name='" + name + "']/option")).map { _.text }.toList
def assertListCompleteAndIsSorted(list: Seq[String]) = {
list.size should be(20)
list.sorted should be(list)
}
go to homePage + "/kittens"
assertListCompleteAndIsSorted(select("select1"))
assertListCompleteAndIsSorted(select("select2"))
assertListCompleteAndIsSorted(select("select3"))
}
private def purchaseForms() = findAll(xpath("//form/li/input[@id='purchase']/..")).map { _.text }.toList
override def afterAll() {
webDriver.quit()
}
}
我更新了镀铬驱动器,(Chrome应用程序启动但在第二次关闭后出现错误)
答案 0 :(得分:1)
首先,您的“首页”测试转到http://localhost:9000
,但没有任何重定向(您的下一个测试中有一个),由于网址不匹配,您的currentUrl should startWith
检查会正确失败。
您的“显示三个下拉列表”测试可能会失败,因为您是not waiting - 在go to homePage + "/kittens"
请求之后 - 在页面完全加载之前(毫秒之后)您的XPath查询运行并返回匹配元素的数量。如果页面仅部分加载,则零是一个非常合理的结果。
可能最好的解决方案是确定应出现在相关页面上的另一个元素(可能是页脚?)并等待 it 出现:
WebDriverWait wait = new WebDriverWait(driver, 2000); // 2 secs
wait.until(ExpectedConditions.presenceOfElementLocated(locator));
此时您可以假设页面已满载,并检查实际的下拉计数。
答案 1 :(得分:0)
你有一个没有启动的webdriver:
System.setProperty("webdriver.chrome.driver", "bin\\chromedriver.exe") val dc = DesiredCapabilities.chrome() wd = new ChromeDriver(dc) // manage chrome through chromedriver // wd.get(host) or go to host // wd.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS) // wd.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS)