import java.io.IOException;
import geb.Browser
import org.openqa.selenium.WebDriver
import org.openqa.selenium.firefox.FirefoxDriver
public class Signin {
def browser = new Browser()
def driver
public launch() throws IOException {
browser.driver = new FirefoxDriver()
browser.go"http://www.gmail.com/"
sleep(1000)
println "First Class completed"
}
}
主要课程
import geb.Browser;
import java.io.IOException;
import Signin
class Main {
static main(args) throws IOException {
Signin first =new Signin()
first.launch()
sleep(1000)
Search third =new Search()
third.search()
}
}
import geb.Browser
import java.io.IOException;
import org.openqa.selenium.WebElement
import org.openqa.selenium.By.ByXPath;
import org.openqa.selenium.WebElement.*;
import org.openqa.selenium.firefox.FirefoxDriver
import geb.*
import Signin
class Search extends Signin {
def elementToClick
void search() throws IOException {
sleep(1000)
println"search class"
wait(1000)
WebElement myaccount =browser.$("a", title: "my account")
myaccount.click()
// WebElement elementToClick = driver.$("a", title:"searchTerm");
// elementToClick.click()
browser.$("input", id:"searchTerm").value("abi")
sleep(1000)
//driver.findElement(By.xpath("//*[@id=\"pay-now\"]")).click();
println "Search class completed"
}
}
输出:
First Class completed
search class
Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '[]' with class 'geb.navigator. EmptyNavigator' to class 'org.openqa.selenium.WebElement'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '[]' with class 'geb.navigator.EmptyNavigator' to class 'org.openqa.selenium.WebElement'
at Search.search(Search.groovy:22)
at Search$search.call(Unknown Source)
at Main.main(Main.groovy:22)
请帮我解决错误
注意:如果我启用WebElement elementToClick = driver。$(" a",title:" searchTerm"); elementToClick.click()这一行 它抛出错误$()null方法
答案 0 :(得分:0)
如评论中所述,请尝试使用def
代替WebElement
。如果必须为变量指定类型,请尝试使用Navigator
。在您的原始帖子中,Geb无法返回包含值a
的属性title
的内容my account
链接。因此,返回EmptyNavigator
,但不会延伸WebElement
。
使用的webdriver不知道$()方法。这是Geb在其页面内容处理中实现的方法。 Browser
对象知道页面内容。
您在评论中的帖子看起来像是您尝试将参数传递给click()
,其中没有一个是有效的。成功检索页面内容后,您将能够在初始帖子中尝试使用click()
内容。
tim_yates在评论中提出了这一点,但我也同意,看起来你没有正确地在页面上获取内容。
有关工作示例,请参阅http://www.gebish.org/manual/current/intro.html#full_examples。该链接还将带您进入Geb文档。