2014-12-22 2 views
0
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) 

пожалуйста, помогите мне, чтобы устранить ошибку

Примечание: если i включить элемент WebElement elementToClick =. $ ("a", title: "searchTerm"); elementToClick.click() эта линия он бросает $ ошибок() нулевой метод

+2

Измените 'WebElement' на' def'. Я подозреваю, что ваша проблема в том, что ссылка на этот заголовок не существует на странице –

+0

Метод click() получает ошибку: Caught: groovy.lang.MissingMethodException: Нет сигнатуры метода: geb.navigator.NonEmptyNavigator.click() is применимо для типов аргументов: (java.util.LinkedHashMap, java.lang.String) значения: [[название: моя учетная запись], a] Возможные решения: нажмите(), щелкните (java.lang.Class), нажмите (java .util.List), wait(), last(), size() – abi

+0

Разве EmptyNavigator не означает, что элемент не существует? – blackdrag

ответ

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.

 Смежные вопросы

  • Нет связанных вопросов^_^