我编写了一个代码来连接到这个网页:compilerjava.net
1)我在该页面中找到了接受要编译的代码的文本区域字段。
2)我找到了编译代码的按钮。
3)我找到了返回代码结果的文本区域。
问题是,当我调用textarea.setText(“something”)时,它(我认为)实际上并没有改变网页中的代码。因此,当我单击编译按钮时,它会编译该页面中的默认代码并返回该默认代码的输出。
我试图将焦点设置为textarea,你可以在下面看到所有这些。 我打电话了;
1)textArea.focus();
2)textArea.click();
3)我尝试使用textArea.setAttribute(“name”,“code”);
我搜索了互联网,发现了各种堆栈溢出问题接近这个问题,它们都没有解决我的问题,只是当他们说textArea.setText()时似乎对每个人都有效。
我应该与你分享的另一个有趣的事实是,
如果我调用textArea.setText(“...”)然后我说;
HtmlTextArea textArea1 = form.getTextAreaByName(“code”);
如果我调用textArea1.getText(),则此文本的值将为“...”。这应该意味着我实际上设法改变了文本区域的值,但是当我编译时,它编译文本区域中的默认文本而不是我设置它的文本。
对此有何帮助?
P.S:我将编译结果放在while循环上的原因与网络连接问题有关。如果您尝试运行此代码,则可能在第一次尝试时无效。另请注意,运行时间大约为15秒,因为它会提供数千个警告,我将其阻止打印到控制台。 P.S2:我也看过这个页面,但这些都没有效果;
public class Test {
public static void main(String[] args) {
try {
// Prevents the program to print thousands of warning codes.
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF);
java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);
// Initializes the web client and yet again stops some warning codes.
WebClient webClient = new WebClient( BrowserVersion.CHROME);
webClient.getOptions().setThrowExceptionOnFailingStatusCode( false);
webClient.getOptions().setThrowExceptionOnScriptError( false);
webClient.getOptions().setJavaScriptEnabled( true);
webClient.getOptions().setCssEnabled( true);
// Gets the html page, which is the online compiler I'm using.
HtmlPage page = webClient.getPage("https://www.compilejava.net/");
// Succesfully finds the form which has the required buttons etc.
List<HtmlForm> forms = page.getForms();
HtmlForm form = forms.get( 0);
// Finds the textarea which will hold the code.
HtmlTextArea textArea = form.getTextAreaByName( "code");
// Finds the textarea which will hold the result of the compilation.
HtmlTextArea resultArea = page.getHtmlElementById( "execsout");
// Finds the compile button.
HtmlButtonInput button = form.getInputByName( "compile");
textArea.click();
textArea.focus();
// Simple code to run.
textArea.setDefaultValue( "public class HelloWorld\n" +
"{\n" +
" // arguments are passed using the text field below this editor\n" +
" public static void main(String[] args)\n" +
" {\n" +
" System.out.print( \"Hello\");\n" +
" }\n" +
"}");
System.out.println( textArea.getText());
// Compiles.
button.click();
// Result of the compilation.
String str = resultArea.getText();
while ( resultArea.getText() == null || resultArea.getText().substring(0, 3).equals( "exe")) {
System.out.print( resultArea.getText());
}
System.out.println();
System.out.println( resultArea.getText());
} catch ( Exception e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
这里有点耐心帮助
ns