2014-12-11 192 views
1

我一直在做一些與Selenium和Fiverr.com的工作,我遇到了一些問題,我希望得到一些幫助。我試圖創造一個新的演出,我已經設法做了一切,但有幾件事仍然困擾着我。有一件事是圖片上傳。夫婦與硒的事情

•您有你點擊一個文件輸入類型()帶來了一個Windows對話框,我的計劃迄今使用SendKeys.SendWait工作過,除了在那裏你推「開放」的Windows對話框的部分按鈕提交圖片。我試過使用SendKeys.SendWait(「{ENTER}」)來點擊它,但到目前爲止還沒有爲我工作,所以對此有什麼想法?除非P/Invoke有處理Windows對話框的東西,否則我想不出有什麼其他辦法可以做到這一點?

•我也試圖在'說明'框中輸入文字,但還沒有做到這一點。我試圖通過類名來得到它,但它告訴我,因爲它隱藏在它無法訪問類的,也試圖像這樣做到這一點通過JavaScript(IJavaScriptExecutor):

IWebElement detailFrame = firefoxDriver.FindElement(By.XPath("/html/body")); 
    var executor = firefoxDriver as IJavaScriptExecutor; 
    executor.ExecuteScript("arguments[0].innerHTML = 'hiiiiiiii'", detailFrame); 

很奇怪因爲他們用肢體文本字段像這樣:

<body marginwidth="0" marginheight="0" spellcheck="true" class="wysihtml5-editor" contenteditable="true" style="color: rgb(119, 119, 119); cursor: auto; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; letter-spacing: normal; text-align: start; text-decoration: none; text-indent: 0px; text-rendering: auto; word-break: normal; word-wrap: break-word; word-spacing: 0px; overflow: auto; background-color: rgb(255, 255, 255);">TEXT HERE<span id="_wysihtml5-undo" class="_wysihtml5-temp"></span></body> 

我認爲他們使用的是兩種不同的「人體的」,雖然,但XPath的只是表明它的/ HTML/BODY。我將如何設置這樣的文本?

謝謝你們的幫助,在過去的兩個小時裏一直在這裏。

回答

1
  1. 硒具有處理窗口的機制。您可以使用driver.SwitchTo().Window("");將焦點設置在新打開的窗口上並對其執行其他操作。但是,請記住回到父窗口,您可能需要再次使用默認內容。有關其他窗口處理技術,請參閱here

  2. 首先,硒不識別隱藏的元素。如果你確定元素沒有被隱藏,那麼我可能會說你正在使用的選擇器可能不正確。如果我理解你提供的HTML清晰,並且元素可見,那麼我建議你使用xpath作爲該元素。 //*[@id='_wysihtml5-undo']//..可能對您有所幫助

+0

告訴我無法找到元素(_wysihtml5-undo),我試過了XPath以及ID,有什麼想法嗎? – Frank 2014-12-11 17:33:01

+0

你能告訴我你正在嘗試的步驟嗎? – Saifur 2014-12-11 17:51:52

+0

firefoxDriver.FindElementById(「_ wysihtml5-undo」)。SendKeys(「Hi」); 或 firefoxDriver.FindElementByXPath(「// * [@ id ='_ wysihtml5-undo']」)。SendKeys(「Hi」); 兩者都拋出相同的錯誤,它找不到。 – Frank 2014-12-11 23:47:38