Переключиться на кадр не работает в драйвере HtmlUnit - PullRequest
0 голосов
/ 18 декабря 2018

Я работаю с HtmlUnit Driver, однако мой код работает с Firefox или chrome, но когда я начал использовать HtmlUnit Driver, он работал до определенного момента, но после этого он застрял в строке, где я использовал driver.switchTo ().frame ("Big");

Я ссылался ниже на ссылки, но не уверен, почему он не работает

.switchTo (). frame (<'frameId'>);не работает с драйвером HtmlUnit

https://sqa.stackexchange.com/questions/15309/selenium-htmlunit-how-do-i-disable-js-errors

ниже - вот что я попробовал.

CustomHtmlUnitDriver.java

    public class CustomHtmlUnitDriver extends HtmlUnitDriver {
 @Override
    protected WebClient modifyWebClient(WebClient client) {
        WebClient modifiedClient = super.modifyWebClient(client);
        modifiedClient.getOptions().setThrowExceptionOnScriptError(false); // see here
        modifiedClient.getOptions().setJavaScriptEnabled(true);
        return modifiedClient;
    }
}

Startup.java

  static CustomHtmlUnitDriver driver = new CustomHtmlUnitDriver();
    Thread.sleep(3000);
    driver.manage().window().maximize();
     ---
   /*some working  code */
   driver.switchTo().frame("Big");
  /*and then the error as below*/

Ошибка как

org.openqa.selenium.NoSuchFrameException: Невозможно найти фрейм с именем или идентификатором: Большая информация о сборке: версия: '3.13.0', ревизия: '2f0d292', время: '2018-06-25T15: 24: 21.231Z' Информация о системе: хост: 'CPU-38', ip: '000000', имя os.name: 'Windows 8', os.arch: 'x86 ', os.version:' 6.2 ', java.version:' 1.8.0_171 'Информация о драйвере: driver.version: неизвестно в org.openqa.selenium.htmlunit.HtmlUnitDriver $ HtmlUnitTargetLocator.frame (HtmlUnitDriver.java:1507)1023 *

1 Ответ

0 голосов
/ 18 декабря 2018

Мне на ум приходят две возможные причины

  1. ifiedClient.getOptions (). SetThrowExceptionOnScriptError (false);Это означает, что вы игнорируете ошибки JS.И поддержка HtmlUnit js в некоторых отношениях не идеальна, может быть, функция js не работает до этой функции (или вызвана из функции), и из-за этого фрейм никогда не создается.Пожалуйста, проверьте ваш журнал, возможно, есть подсказка.
  2. Рамка создана async js;возможно, вам придется подождать после последнего рабочего шага, пока не будет создан кадр.Используйте waitForBackground ... на своем клиенте, чтобы добавить время ожидания.

Если искомый фрейм является частью простого ответа Html (используйте инструменты, такие как Charles, чтобы увидеть, что на самом деле происходит междубраузер и сервер) это может быть ошибка в HtmlUnit / WebDriver.

Пожалуйста, предоставьте полный рабочий пример, чтобы дать нам возможность воспроизвести / отладить проблему.

...