2012-06-03 4 views
4

Я пытаюсь сделать сделать стрелку с помощью Selenium WebDriver/C# компиляции, но когда я пытаюсь скомпилировать я получаю эту ошибку:Селен WebDriver C# SendKeys (Keys.Arrowdown)

'Keys' is an ambiguous reference between 'OpenQA.Selenium.Keys' and 'System.Windows.Forms.Keys' (CS0104)

Мой код:

driver.FindElement(By.Id("ctl00_PlaceHolderMain_ctrlChangeBillingAddress_ctrlChangeBillingAddress_txtBillingAddress")).SendKeys(Keys.ArrowDown); 
driver.FindElement(By.Id("ctl00_PlaceHolderMain_ctrlChangeBillingAddress_ctrlChangeBillingAddress_txtBillingAddress")).SendKeys(Keys.Enter); 

ответ

17

Как заявляет ошибка, существуют два разных типа Keys в двух разных пространствах имен.

Вам необходимо однозначно квалифицировать тип, написав OpenQA.Selenium.Keys.

0

Я могу предоставить вам две реализации, но первый из них работает только локально:

  1. Element.SendKeys(OpenQA.Selenium.Keys.ArrowUp);

  2. char c = '\uE013'; // ASCII code ArrowUp

    Element.SendKeys(Convert.ToString(c));

0

То же самое происходит с моим код тоже. Как и в моей регистрации от, 1. У меня были поля «Адрес», которые выбирают введенный адрес из поиска Google, а затем заполняют поля соответственно: Sub-urb, city, post code и т. Д. 2. Появилась кнопка прикреплять файл (например, просматривать с рабочего стола и выбирать любое изображение или документ для присоединения) Я получил ошибку «Ключи» - это двусмысленная ссылка между OpenQA.Selenium.Keys и 'System.Windows.Forms.Keys' (CS0104) Тогда я понял, что это означает, что существуют два разных типа ключей в двух разных пространствах имен . Coz для выбора адреса, мой код был:

driver.FindElement(By.XPath("//*[@id='PostalAddress_Address']")).SendKeys(Address); //Address to select from autofill and fill textboxes accordingly 
     Thread.Sleep(500); 
     driver.FindElement(By.XPath("//*[@id='PostalAddress_Address']")).SendKeys(Keys.ArrowDown); 
     driver.FindElement(By.XPath("//*[@id='PostalAddress_Address']")).SendKeys(Keys.Enter); 

и Приложить файл код был:

//Select and attach file from the computer 
     driver.FindElement(By.XPath("//*[@id='graduate-education']/div[4]/label")).Click(); //Click Attach file button 
     Thread.Sleep(500); 
     //driver.FindElement(By.XPath("//*[@id='graduate-education']/div[4]/label")).SendKeys(AttachFile); 
     SendKeys.SendWait(@"Complete File Path"); //Select the file from the location 
     Thread.Sleep(500); 
     SendKeys.SendWait(@"{Enter}"); 

Namespaces были добавлены:

using OpenQA.Selenium; using System; using System.Threading; using System.Windows.Forms; 

Из - Ключи типа не признающие, откуда он на самом деле принадлежат, поэтому мне пришлось изменить код адрес полей и использовать OpenQA.Selenium.keys.ArrowDown, как ниже:

driver.FindElement(By.XPath("//*[@id='PostalAddress_Address']")).SendKeys(Address); //Address to select from autofill and fill textboxes accordingly 
     Thread.Sleep(500); 
     driver.FindElement(By.XPath("//*[@id='PostalAddress_Address']")).SendKeys(OpenQA.Selenium.Keys.ArrowDown); 
     driver.FindElement(By.XPath("//*[@id='PostalAddress_Address']")).SendKeys(OpenQA.Selenium.Keys.Enter); 

Это работает для меня, надеюсь, что то же самое для вас слишком

Смежные вопросы