1

I have a problem with this form

<form action="/incoming/Upload.cfg" enctype="multipart/form-data" method="post" onsubmit="return doSubmit();">
  <table id="autoWidth" border="0" style="width: 100%;">
    <tbody>
      <tr>
        <td class="h1" colspan="4" id="t_title">
          Резервная копия и Восстановление
        </td>
      </tr>
      <tr>
        <td class="blue" colspan="4"/>
      </tr>
      <tr>
        <td class="Item" id="t_backup">
          Сохранить:
        </td>
        <td colspan="3">
          <input type="button" class="buttonBigL" name="Backup" value="Резервная копия" onclick="location.href='config.bin';"/>
        </td>
      </tr>
      <tr>
        <td class="Item" id="t_file">
          Файл:
        </td>
        <td>
          <input class="text" name="filename" type="file" size="20" onkeydown="return false"/>

            
        </td>
        <td>
          <input name="Restore" type="submit" class="buttonBigL" id="Submit" value="Восстановить"/>
        </td>
        <td width="100%">
           
        </td>
      </tr>
      <tr>
        <td class="blue" colspan="4"/>
      </tr>
    </tbody>
  </table>
</form>

I want to insert "Backup" file and submit form (in browser click to the "Restore button"). Code.

private String model = "src/test/resources/config.bin";
final WebClient webClient = new WebClient(BrowserVersion.CHROME);
        webClient.getOptions().setTimeout(20000);
        webClient.getOptions().setJavaScriptEnabled(true);
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
  webClient.setConfirmHandler(new ConfirmHandler() {
            public boolean handleConfirm(Page page, String message) {
                System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1123");
                return true;
            }
        });
 final HtmlPage frame = ((HtmlPage) page.getFrameByName("frame").getEnclosedPage());

        List<HtmlForm> forms = mainFrame.getForms();

        HtmlForm htmlForm = forms.get(0);

        htmlForm.<HtmlFileInput>getInputByName("filename").setValueAttribute(model);
        htmlForm.<HtmlFileInput>getInputByName("filename").setContentType("multipart/form-data");
        HtmlPage page = (HtmlPage) mainFrame.executeJavaScript("return doSubmit()").getNewPage();

When I execute JS i have Error

StrictErrorReporter: error: message=[invalid return] sourceName=[injected script] line=[1] lineSource=[return doSubmit()] lineOffset=[7]

When I use

htmlForm.getInputByName("Restore").click();      

nothing happens

1 Answer 1

2

The code is working, the overload goes. But I ran the tests in the spring container, and for some reason I got this error.

@RunWith(SpringRunner.class)
@SpringBootTest

If you run without springs everything works.

htmlForm.<HtmlFileInput>getInputByName("filename").setValueAttribute(model);
htmlForm.<HtmlFileInput>getInputByName("filename").setContentType("multipart/form-data");
HtmlPage restore = htmlForm.getInputByName("Restore").click(); 

Refresh

The problem is - "Target server failed to respond exception." I avoid this across

        webClient.getOptions().setTimeout(20000);
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
        webClient.getOptions().setCssEnabled(false);
        webClient.getOptions().setJavaScriptEnabled(true);
        webClient.getOptions().setUseInsecureSSL(true);
        webClient.getOptions().setRedirectEnabled(true);

Decided

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.