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);
6 Réponses :
Comme les états d'erreur, il existe deux types de touches code> code> dans deux espaces de noms différents. P>
Vous devez qualifier sans ambiguïté le type en écrivant openqa.selenium.keys code>. p>
Je peux vous fournir deux réalisations, mais le premier ne fonctionne que localement: p>
élément.sendKeys (openqa.selenium.keys.arrowup); code> p>
li>
char c = '\ ue013'; // flèche de code ASCII code> p>
élément.sendKeys (convert.tostring (c)); code> p>
li>
ol>
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 et pour joindre le fichier, le code était le suivant: p> 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:
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);
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();
Essayez ceci p>
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); p> blockQuote>
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();
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.