Selenium Webdriver C# Sendkeys (Keys.Arrowdown)

Я пытаюсь сделать стрелку, используя компиляцию Selenium Webdriver/C#, но когда я пытаюсь скомпилировать, я получаю эту ошибку:

"Ключи" - это неоднозначная ссылка между "OpenQA.Selenium.Keys" и "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);

6 ответов

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

Вы должны однозначно определить тип, написав OpenQA.Selenium.Keys,

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

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

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

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

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

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}"); 

Добавлены следующие пространства имен:

    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);

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

Try this

IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("http:www.google.com");
IWebElement MyElement = driver.FindElement(By.Name("q"));
MyElement.SendKeys(Keys.ArrowUp); MyElement.SendKeys(Keys.ArrowDown);

Я бы предложил сделать следующее:

    IWebElement element = driver.FindElement(By.Id("ctl00_PlaceHolderMain_ctrlChangeBillingAddress_ctrlChangeBillingAddress_txtBillingAddress"));
    OpenQA.Selenium.Interactions.Actions action = new OpenQA.Selenium.Interactions.Actions(driver);
    action.SendKeys(element, Keys.Down).SendKeys(element, Keys.Enter).Build().Perform();

Класс Actions - это возможность, предоставляемая Selenium для обработки событий клавиатуры и мыши. В Selenium WebDriver обработка этих событий включает такие операции, как перетаскивание, нажатие на несколько элементов с помощью клавиши управления и другие.

          IWebDriver driver = new ChromeDriver();
    Actions action = new Actions(driver);
    action.SendKeys(Keys.UpArrow);
    action.Build().Perform();  // releasing the control 
    action = new Actions(driver); // reinitialize 
    action.SendKeys(Keys.DownArrow);
    action.Build().Perform(); 
Другие вопросы по тегам