2013-08-25 67 views
0

我想在使用Selenium的頁面上找到一個元素。下面是一些例子內容:如何在Selenium中使用CSS選擇器找到TinyMCE編輯器的主體?

<body id="tinymce" class="mceContentBody " contenteditable="true" dir="ltr"  style="overflow: auto;"> 

這裏是我正在嘗試選擇它:

driver.findElement(By.cssSelector("body#tinymce")).sendKeys("Hello, everyone!! Don't worry it is a test letter to check connection!!"); 

我沒有得到一個元素,雖然返回。

+0

你爲什麼要把鑰匙發送到''元素?你不應該在文本字段中輸入嗎? –

+0

是的你是對的,我應該輸入到文本字段 –

回答

2

看起來您正在測試TinyMCE editor

的問題是:

  • 這是在iframe中,你需要切換到該IFRAME第一。
  • 您需要發送鍵<body>元件(未<input>)該iframe

這裏面是做什麼的:

// switch to iframe, use locator of your choice, "#editMe_ifr" here as an example 
WebElement editorFrame = driver.findElement(By.cssSelector("#editMe_ifr")); 
driver.switchTo().frame(editorFrame); 

WebElement body = driver.findElement(By.TagName("body")); // then you find the body 
body.sendKeys(Keys.CONTROL + "a"); // send 'ctrl+a' to select all 
body.SendKeys("Some text"); 

延伸閱讀:

+0

您的代碼正常工作 –

0

您可以將HTML改成這樣:

<body> 
    <input id="tinymce" type="text"/> 
</body> 

而且你可以選擇改變從body#tinymce#tinymce。您不應該在使用id時指定標記名,因爲無論如何id應該是唯一的。

+0

不應該'身體#tinymce'意味着''元素與id'tinymce'?請注意,兩者之間沒有空間。 –

+0

你是對的。 –

+0

更改代碼非常有幫助,但我無法做到。 –