2013-05-29 4 views
0

Я пытаюсь нажать на кнопку Поиск на этом сайте: http://www.amadeusepower.com/trek/portals/trek/default.aspx?Culture=en-USHtmlUnit не может нажать на кнопку внутри элемента таблицы

Но это, по-видимому, не может нажать, потому что возвращаемый страница такая же, как старая страница. Он должен вернуть страницу, на которой отображаются результаты этого поиска.

Я пробовал htmlunitscripter, но он, похоже, не знает, что я нажал на кнопку, и он не генерирует код для него. Я пробовал:

HtmlElement theElement5 = (HtmlElement) page.getElementById("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_btnSearch"); 
page = (HtmlPage) theElement5.click(); 

Но он не работает (возвращает старую страницу). Я пробовал этот следующий код в селене, и он работал, но я не могу использовать селен из-за проблем, которые он вызвал, когда я пытался использовать его в веб-службе.

WebElement searchbutton = driver.findElement(By.id("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_btnSearch")); 
searchbutton.click(); 

Как добраться до этой кнопки в htmlunit? Я не пробовал xpath, потому что не знаю, как получить элемент с ним. Может кто-нибудь, пожалуйста, взгляните на сайт и предложите решение для достижения и нажмите эту кнопку?

EDIT:

Когда я попробовал это один

page.executeJavaScript("var elem = document.getElementById('ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_btnSearch'); elem.click();"); 

Он бросает это исключение.

May 29, 2013 8:23:41 PM com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine handleJavaScriptException 
INFO: Caught script exception 
======= EXCEPTION START ======== 
EcmaError: lineNumber=[1] column=[0] lineSource=[<no source>] name=[TypeError] sourceName=[injected script] message=[TypeError: Cannot find function click in object [object HTMLSpanElement]. (injected script#1)] 
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot find function click in object [object HTMLSpanElement]. (injected script#1) 
at  com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:669) 
at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:601) 
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507) 
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:555) 
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:530) 
at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:979) 
at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScript(HtmlPage.java:947) 
at eko.htmlunit.ekoht.main(ekoht.java:63) 
Caused by: net.sourceforge.htmlunit.corejs.javascript.EcmaError: TypeError: Cannot find function click in object [object HTMLSpanElement]. (injected script#1) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3603) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3587) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3608) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3624) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3688) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2207) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2189) 
at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1333) 
at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:798) 
at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105) 
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:405) 
at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:275) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3031) 
at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.exec(InterpretedFunction.java:115) 
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$3.doRun(JavaScriptEngine.java:546) 
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:654) 
... 7 more 
Enclosed exception: 
net.sourceforge.htmlunit.corejs.javascript.EcmaError: TypeError: Cannot find function click in object [object HTMLSpanElement]. (injected script#1) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3603) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3587) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3608) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3624) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3688) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2207) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2189) 
at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1333) 
at script(injected script:1) 
at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:798) 
at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105) 
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:405) 
at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:275) 
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3031) 
at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.exec(InterpretedFunction.java:115) 
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$3.doRun(JavaScriptEngine.java:546) 
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:654) 
at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:601) 
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507) 
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:555) 
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:530) 
at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:979) 
at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScript(HtmlPage.java:947) 
at eko.htmlunit.ekoht.main(ekoht.java:63) 
======= EXCEPTION END ======== 

По-видимому, он не может найти функцию щелчка для элемента. Что еще можно сделать?

ответ

0

Вы можете попробовать выполнения вызова, чтобы увидеть, если он работает таким образом с помощью JS:

JS должно быть что-то вроде этого:

var elem = document.getElementById('ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_btnSearch'); elem.click(); 
+0

Он бросает исключение. Я добавил исключение из вопроса. Не могли бы вы взглянуть? – ManahManah

+0

Я только что заметил, что вы используете HtmlElement в своем OP. Вы попробовали HtmlSpan? Если это не работает, я бы просмотрел возможности htmlunit, чтобы щелкнуть теги span. – Farlan

+0

Это не имело значения. Старая страница возвращается снова. – ManahManah

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