2014-07-14 18 views
0

我正在嘗試訪問網站,點擊「聯繫我們」,然後在「詢問購物者」中搜索一個字詞!搜索框。我試圖在Selenium IDE中重新創建測試,但在錄製時沒有捕獲搜索。我也不確定如何訪問錯誤日誌來診斷錯誤。到目前爲止,我有:Selenium:無法搜索框

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

using OpenQA.Selenium; 
using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium.Chrome; 

namespace TestApplications 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      IWebDriver driver = new ChromeDriver(@"C:\Library"); 
      driver.Url = "http://www1.shoppersdrugmart.ca/en/Home"; 

      var findContact = driver.FindElement(By.CssSelector("#Header > section.hdr-bar > div > div > menu > ul > li:nth-child(2) > a")); 
      findContact.Click(); 

      driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 

      var findAsk = driver.FindElement(By.CssSelector("#response")); 
      findAsk.SendKeys("text"); 

     } 
    } 
} 

回答

1

因爲在該頁面有一個iframe用相同的ID response,而你的目標元素,此幀以相同的ID內。

<iframe id="response" height="70" marginheight="5" src="http://shoppers.mangomoon.ca/interact/customer_interface/question_form_sdm.jsp" frameborder="0" width="470" name="response" marginwidth="5"></iframe> 

因此,您需要先切換到幀。

IWebDriver driver = new ChromeDriver(@"C:\Library"); 
driver.Url = "http://www1.shoppersdrugmart.ca/en/Home"; 

var findContact = driver.FindElement(By.CssSelector("#Header > section.hdr-bar > div > div > menu > ul > li:nth-child(2) > a")); 
findContact.Click(); 

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 

driver.SwitchTo().Frame("response"); // add this for frame switching 

var findAsk = driver.FindElement(By.CssSelector("#response")); 
findAsk.SendKeys("text");