0

私たちはアプリケーションで、セレンを使用して自動化するリッチテキストエディタを用意しています。以下は同じもののhtmlです。リテインテキストエディタでテキストをSelenium webdriverに入力する方法は?

<iframe style="height: 76px; width: 1004px;"></iframe> 
<html><head></head><body spellcheck="false"></body></html> 
<head></head> 
<body spellcheck="false"></body> 
<html><head></head><body spellcheck="false"></body></html> 
<iframe style="height: 76px; width: 1004px;"></iframe> 
<div class=""><iframe style="height: 76px; width: 1004px;"></iframe></div> 
<textarea class="form-control Editor" name="actionUpdate" id="actionUpdateId" style="display: none;"></textarea> 

複数のオプションを試しました。 XPathを使用して要素を見つけることができないとして、それはIE11のブラウザでは動作しません。しかし、次のコードは、Chromeブラウザ

driver.switchTo().frame(0); 
WebElement el = driver.switchTo().activeElement(); 
new Actions(driver).moveToElement(el).perform(); 
driver.findElement(By.xpath("/html/body")).sendKeys("Check"); 

に完全に正常に動作します。 両方のブラウザの違いは、IEを使ってテキストフィールドに何かを入力すると、textareaタグに行きます。しかし、クロムではbodyタグで入力します。 IEでID = "actionUpdateID"を使用して要素を検索しようとしましたが、要素が表示されないという例外がスローされます。おそらくstyle = "display:none;"

+0

それは本当に完全な 'XPath'ですか?それは私にとって正しいとは思わない。 – Brian

+0

はい、完全なxpathです。iframeに切り替えると、おそらく/ html/bodyと一緒に問題なく動作しています。 –

答えて

0

アプリケーションで手動で入力するテキストは、のtextarea要素になりますので、あなたはセレンでのtextarea要素にのSendKeysを使用して値を設定しようとすることができます。
あなたがセレンを使用してテキストエリア要素に何らかの値を設定すると、同じ値は、Webアプリケーションでリッチテキストエディタに追加されます。

しかし、あなたのHTMLコードごとにテキストエリア要素がディスプレイとしてスタイルされています原因あなたセレンコードが要素に例外ときのSendKeysがスローされますとなしの表示属性がインラインまたはブロックに変更された場合、これは修正できます。インラインその後、のSendKeysを使用して要素にはいくつかの値を設定します。

したがって、あなたは最初TEXTAREA表示へのスタイルを設定する必要があります。

:以下のコードを使用して、あなたのリッチテキストエディタにいくつかの値を設定するには

((JavascriptExecutor)driver).executeScript("document.getElementsByName('actionUpdate')[0].style.display='inline'"); 

JavascriptExecutorを使用してのtextarea要素のスタイルを変更するには

driver.findElement(By.name("actionUpdate")).sendKeys("Show this message in rich text editor"); 
1

リッチテキストボックスを処理するにはJavaScriptExecutorを使用する方が良い方法です。適切なiframeに切り替え、innerHtmlをiframeの本体に設定するだけです。

WebElement text= driver.findElement(By.cssSelector("body")); (JavascriptExecutor)driver.executeScript("arguments[0].innerHTML = 'Set text using innerHTML'", text);

+0

CSSセレクタで要素を見つけることができません== body –

関連する問題