2

入力するテキストを設定してから、非表示のリンクをクリックしようとしています(ばかげているように聞こえますが、これは別の問題の回避策です)。だから私は次のようなものを試しました

WebElement element = webDriver.findElement(By.cssSelector("input[id$='inputId']"));
((JavascriptExecutor) webDriver).executeScript("arguments[0].style.visibility='visible';", element);
element.sendKeys(text);

私も試しました

((JavascriptExecutor) webDriver).executeScript("arguments[0].setText(" + text + ")", element);
or "arguments[0].text="someText"

これらの作業はありません。テストは常に次のように終了します。

java.lang.IllegalArgumentException: Argument is of an illegal type: $Proxy30

デバッグすると、要素が正しく検出されていることがわかりますが、スクリプトの実行中にこの例外が発生します。それで、私はここで何を間違っているのですか?

PSそのリンクをクリックするにはどうすればよいですか、JS Executorも使用する必要がありますか?

4

1 に答える 1

2

セミソリッド ブラウザーでは、JavaScript を介して要素を検索することもできます。これを実行するだけです。

var elem = document.querySelector("input[id$='inputId']");
elem.value = "some text";

の使用にも注意してくださいvaluesetText()要素のメソッドや属性を見たことがないtextので、間違っているかもしれません。valueしかし、入力値は属性によって設定されていると確信しています。

WebDriver で:

JavascriptExecutor js = (JavascriptExecutor)webDriver;
js.executeScript(
    "document.querySelector(\"input[id$='inputId']\").value = '" + someText + "';");
于 2013-01-18T13:12:01.963 に答える