0

HTML要素yandex qaツールのセレンラッパーはうまく機能し、要素が@FindBy注釈で開始されたページオブジェクト上にありHtmlElementLoader.populatePageObject(this, ((WebDriverBrowser)Browser.getDriver()).getWebDriver());、ページオブジェクトコンストラクター内にある場合、要素を初期化します

しかし、ページのコンテンツが動的に変化する場合は、途中で @FindBy レイクを使用せずに HtmlElement を作成したいと考えています。

public static void openNavigator(String navigatorName) {
    String navigatorPath = String.format(MENU_OBJ_XPATH_PATTERN, navigatorItemMenuName);
    Element navigatorMenu = new Element(By.xpath(navigatorXpath));
    navigatorMenu.waitForVisible();
}

この場合、要素コンストラクターは次のようになります

public Element(By locator) {        
    this.locator = locator;
}

エラーが発生しました:no such element: Unable to locate element

そして、要素を直接初期化しようとしても

HtmlElementLoader.createHtmlElement(Element.class, Browser.getBrowser().getWebDriver().findElement(By.xpath("//td[contains(text(),'Navigator')]")))

エラーが発生しました

no such element: Unable to locate element: {"method":"xpath","selector":"//td[contains(@id,'cnt-start')]//*[contains(text(),'Navigator')]"}
  (Session info: chrome=68.0.3440.106)
  (Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),platform=Windows NT 10.0.16299 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds

このような Html 要素ラッパーを使用することは可能ですか?

4

2 に答える 2