1

キーを入力に送信しようとしていますが、なぜ次のような警告が表示されるのかわかりません。

org.openqa.selenium.InvalidElementStateException: 要素は非表示、無効、または読み取り専用であってはなりません (警告: サーバーはスタックトレース情報を提供しませんでした)

HTML ページのソース:

<span id="mini-7" class="mini-textbox mini-textbox-empty" style="border-width: 0pt; width: 342px;">
<input class="mini-textbox-input" type="text" autocomplete="off" style="width: 338px;">
<input type="hidden">
</span>

私のコード:

driver.findElement(By.cssSelector("#mini-7 > input.mini-textbox-input")).clear();
driver.findElement(By.cssSelector("#mini-7 > input.mini-textbox-input")).sendKeys("yy");

次に、コードを次のように変更します。

JavascriptExecutor jse = (JavascriptExecutor)driver;
((JavascriptExecutor) jse).executeScript("arguments[0].type ='text';",driver.findElement(By.xpath("//span[@id='mini-7']/input[2]")));   

しかし、今回はjsエラーがスローされます。なんで?

最初の入力に sendkeys を使用します。この入力は非表示ではありません

4

3 に答える 3

1

まず、type属性の値をテキストとして非表示から変更する必要があります。これで、WebDriverを使用してそのテキストを入力できるようになりました。したがって、JavaとJavascriptを使用してWebDriverで入力するための全体的なコードは次のとおりです。

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.getElementById('mini-7').setAttribute('type', 'text');");
driver.findElement(By.cssSelector("#mini-7 > input.mini-textbox-input")).clear();
driver.findElement(By.cssSelector("#mini-7 > input.mini-textbox-input")).sendKeys("yy");

非表示になっていない最初の入力フィールドには、cssSelectorの絶対パスを使用します。

于 2013-01-22T11:21:56.043 に答える
1

その入力にはまだ css プロパティvisibility: hiddenまたはdisplay: none. それが例外があなたに言っていることです。ブラウザの開発ツールですべてのプロパティを確認してください。

于 2012-12-25T16:24:34.133 に答える
0

この場合にできることは、css タグを変更して要素を表示することです。

visibility: hidden 

また

display: none

キーを送信する直前にJavaScriptを使用します。

于 2013-01-07T11:21:26.327 に答える