11
votes

Sélénium webdriver c # envoiskes (clés.arrowdown)

J'essaie de faire une flèche à l'aide de Selenium webDriver / C # Compiler, mais lorsque j'essaie de compiler, je reçois cette erreur:

'Keys' est une référence ambiguë entre 'openqa.selenium.keys' et 'System.windows.forms.keys' (CS0104) P> BlockQuote>

My Code: P>

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


0 commentaires

6 Réponses :


24
votes

Comme les états d'erreur, il existe deux types de touches dans deux espaces de noms différents.

Vous devez qualifier sans ambiguïté le type en écrivant openqa.selenium.keys .


0 commentaires

5
votes

Je peux vous fournir deux réalisations, mais le premier ne fonctionne que localement:

  1. élément.sendKeys (openqa.selenium.keys.arrowup);

  2. char c = '\ ue013'; // flèche de code ASCII

    élément.sendKeys (convert.tostring (c));


0 commentaires

2
votes

Même si mon code se produise aussi. Comme dans mon inscription de, 1. J'avais des champs d'adresse qui relient l'adresse entrée de Google Recherche, puis remplit les champs en conséquence, tels que: sous-up, ville, code postal, etc. 2. Il y avait un bouton pour joindre un fichier (comme Parcourir de bureau et sélectionner une image ou un document à joindre) J'ai eu une erreur "" Keys "est une référence ambiguë entre openqa.selenium.keys code> et 'system.windows.forms.keys' (CS0104) code> Ensuite, j'ai réalisé que cela signifie qu'il existe deux types de clés différentes dans deux espaces de noms différents. Coz pour la sélection de l'adresse, mon code était: xxx pré>

et pour joindre le fichier, le code était le suivant: p>

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


0 commentaires

0
votes

Je suggérerais 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 commentaires

1
votes

Essayez ceci

pilote iWebDriver = nouveau chromedriver ();
Driver.Navigate (). GoTourl ("httTP: www.google.com");
Iwebellement myelement = pilote.findellement (nommé ("Q"));
Myelement.sendkeys (clés.arroUp); Myelement.sendkeys (clés.arrowdown);


0 commentaires

-1
votes

Classe d'actions forte> est une capacité fournie par le sélénium pour la manipulation des événements du clavier et de la souris. Dans Selenium WebDiver, la manipulation de ces événements comprend des opérations telles que la glisser-déposer, en cliquant sur plusieurs éléments avec la clé de contrôle, entre autres.

    IWebDriver driver = new ChromeDriver();
    Actions action = new Actions(driver);
    action.SendKeys(Keys.UpArrow);
    action.Build().Perform();   // build and perform is used to complete that particular action. 
    action = new Actions(driver); // reinitialize 
    action.SendKeys(Keys.DownArrow);
    action.Build().Perform(); 


3 commentaires

Bien que ce bloc de code puisse répondre à la question, il serait préférable que vous puissiez fournir une petite explication pour laquelle cela le fait.


La classe d'actions est une capacité fournie par le sélénium pour la manipulation des événements du clavier et de la souris. Dans Selenium WebDriver, la manipulation de ces événements comprend des opérations telles que le glisser-déposer, en cliquant sur plusieurs éléments avec la clé de contrôle, entre autres.


Construire et effectuer est utilisé pour compléter cette action particulière.