Selenium Webdriver С# Sendkeys (Keys.Arrowdown)

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

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

Ответ 1

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

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

Ответ 2

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

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

  • char c = '\uE013'; // ASCII code ArrowUp

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

Ответ 3

То же самое происходило и с моим кодом. Как и в моей регистрации, 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);

а для файла Attach - код:

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

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

Ответ 4

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

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

Ответ 5

Попробуйте это

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