Selenium Webdriver C# Sendkeys (Keys.Arrowdown)

j'essaie de faire une flèche en utilisant Selenium Webdriver / C# compiler mais quand j'essaie de compiler j'obtiens cette erreur:

Clés "est une référence ambiguë entre" OpenQA.Nium.Les touches et 'Système.Windows.Forme.Keys' (CS0104)

mon code:

driver.FindElement(By.Id("ctl00_PlaceHolderMain_ctrlChangeBillingAddress_ctrlChangeBillingAddress_txtBillingAddress")).SendKeys(Keys.ArrowDown);
driver.FindElement(By.Id("ctl00_PlaceHolderMain_ctrlChangeBillingAddress_ctrlChangeBillingAddress_txtBillingAddress")).SendKeys(Keys.Enter);
4
demandé sur Liam 2012-06-03 07:35:45

4 réponses

comme l'indique l'erreur, il y a deux types différents Keys dans deux espaces de noms différents.

vous devez qualifier sans ambiguïté le type en écrivant OpenQA.Selenium.Keys .

18
répondu SLaks 2012-06-03 03:37:33

je peux vous fournir deux constatations, mais la première ne fonctionne que localement:

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

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

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

0
répondu user2742238 2016-09-30 08:37:47

il en allait de même pour mon code. Comme dans mon inscription de, 1. J'ai eu un champ D'adresse qui prend l'adresse entrée dans google search et remplit ensuite les champs en conséquence tels que: Sub-urb, Ville , code postal, etc. 2. Il y avait un bouton pour joindre un fichier (comme Parcourir à partir du bureau et sélectionner n'importe quelle image ou document à joindre) J'ai eu l'erreur "'Keys' est une référence ambiguë entre OpenQA.Selenium.Keys et 'System.Windows.Forms.Keys' (CS0104) Puis j'ai réalisé qu'il y avait deux types de clés différents. dans deux espaces de noms différents. Coz pour le choix de l'adresse, mon code était:

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

et pour joindre le fichier, le code était:

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

espaces de noms ont été ajoutés:

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

en raison de-type de touches ne reconnaissait pas d'où il appartient, donc j'ai dû changer le code des champs d'adresse et utiliser OpenQA.Nium.touches.ArrowDown comme ci-dessous:

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

ça a marché pour moi, j'espère la même chose pour vous aussi

0
répondu Tester 2017-11-22 00:13:54

je suggère de faire ensuite:

    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();
0
répondu angrybambr 2018-09-03 14:49:51