1

PrimeFaces で作成された TextBox にテキストを送信しようとすると、次のようになります。

私は試します:

getDriver().findElement(By.id("addRowTable:0:hostName")).sendKeys("testing");

HTML は次のとおりです。

ホスト名を入力してください:$(function() {PrimeFaces.cw('Watermark','widget_addRowTable_0_j_idt474',{id:'addRowTable:0:j_idt474',value:'Hostname',target:'addRowTable:0:hostName'},'透かし');}); PrimeFaces.cw('InputText','widget_addRowTable_0_hostName',{id:'addRowTable:0:hostName'});.xxxxcxxxxxdddddddddd.net

XPath を次のように取得します。

//*[@id="addRowTable:0:hostName"]

例外が発生します:

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"addRowTable\\:0\\:hostName"}
Command duration or timeout: 149 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html

私が見ると

http://seleniumhq.org/exceptions/no_such_element.html

私は一般的な説明を得る:

The element may not be present.

エスケープしても: with \ は機能しませんでした

getDriver().findElement(By.id("addRowTable\\:0\\:hostName")).sendKeys("testing");
4

1 に答える 1

0

私たちのアプリケーションでは、JSF コンポーネント ツリー内のコンポーネントの位置に依存するため、完全な ID を直接確認することはありません。

むしろ、 ($=) 演算子で終わるCSS を使用する必要があります。

getDriver().findElement(By.cssSelector("input[id$=\"hostName\"]")).sendKeys("testing");

または、ページ オブジェクトを使用して:

public class MyPage extends PageObject {

    @FindBy(css="input[id$=\"hostName\"]")
    private WebElement hostName;

    public void setHostName(String hostName) {
        hostName.sendKeys("testing");
    }

}
于 2012-09-28T12:20:27.680 に答える