Ho bisogno di premereCtrl+Anous utilisons Selenium WebDriver. c'è qualche modo pour farlo? Contrôlez la bibliothèque Sélénium et sélectionnez le Sélénium composé des soles pressées des goûts spéciaux.
Une solution supplémentaire (en Java, car vous ne nous avez pas indiqué votre langue - mais cela fonctionne de la même manière dans toutes les langues avec Keys
class):
String selectAll = Keys.chord(Keys.CONTROL, "a");
driver.findElement(By.whatever("anything")).sendKeys(selectAll);
Vous pouvez l'utiliser pour sélectionner le texte entier dans un <input>
ou sur la page entière (il suffit de rechercher l'élément html
et de le lui envoyer).
EDIT - après que OP ait indiqué qu'il utilisait des liaisons Selenium Ruby
Il n'y a pas de méthode chord()
dans la classe Keys
in Ruby. Par conséquent, comme suggéré par Hari Reddy, vous devrez utiliser l'API d'interactions utilisateur Selenium Advanced, voir ActionBuilder
:
driver.action.key_down(:control)
.send_keys("a")
.key_up(:control)
.perform
CliccareCtrl+Apuoi farlo con le azioni
Actions action = new Actions();
action.keyDown(Keys.CONTROL).sendKeys(String.valueOf('\u0061')).perform();
\ u0061 rappresenta il carattere 'a'
\ u0041 rappresenta il carattere 'A'
Par défaut, les chiffres sont faibles Unicode - http://unicode.org/charts/PDF/U0000.pdf
Vous pouvez essayer ceci:
driver.findElement(By.xpath(id("anything")).sendKeys(Keys.CONTROL + "a");
DaCtrl+Amappa a ASCII codice 1 (Ctrl+Bun 2, une finCtrl+Zun 26).
Provare:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenQA.Selenium;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Internal;
using OpenQA.Selenium.Remote;
namespace SeleniumHqTest
{
class Test
{
IWebDriver driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://localhost");
IWebElement el = driver.FindElement(By.Id("an_element_id"));
char c = '\u0001'; // ASCII code 1 for Ctrl-A
el.SendKeys(Convert.ToString(c));
driver.Quit();
}
}
Pour Python:
ActionChains(driver).key_down(Keys.CONTROL).send_keys("a").key_up(Keys.CONTROL).perform();
La classe de robot fonctionnera de manière très efficace par rapport à l'envoi des clés via les sendkeys de Selenium. S'il vous plaît essayez
Ex:
Robot rb = new Robot();
rb.keyPress(KeyEvent.VK_CONTROL);
rb.keyPress(KeyEvent.VK_A);
Pour utiliser la classe de robot ci-dessus, vous devez import Java.awt.Robot;
'
La réponse la plus simple en C # (si vous êtes enclin à C #).
Actions action = new Actions();
action.KeyDown(OpenQA.Selenium.Keys.Control).SendKeys("a").KeyUp(OpenQA.Selenium.Keys.Control).perform();
Hari Reddy a presque donné cette réponse ci-dessus, mais j'ai corrigé le cas où il s'était trompé sur certains mots clés, ajouté KeyUp ou vous vous retrouvez dans un désordre en laissant la touche de contrôle enfoncée, j'ai également ajouté la clarification concernant OpenQA. Selenium.Keys parce que vous utilisez peut-être aussi Windows.Forms sur la même classe que celle que j’étais demandait cette clarté. Enfin, je tape "a" car j’ai trouvé que c’était le moyen le plus simple et je ne vois aucune suggestion de la part du PO de ne pas vouloir la réponse la plus simple.
Merci beaucoup à Hari Reddy car j'étais novice dans l'utilisation de la classe Actions et j'écrivais beaucoup de commandes différentes, en les enchaînant comme il l'a montré est plus rapide :-)
C'est ce qui a fonctionné pour moi en utilisant C # (VS2015) avec Selenium:
new Actions(driver).SendKeys(Keys.Control+"A").Perform();
Vous pouvez ajouter autant de clés que vous le souhaitez en utilisant (+) entre les deux.
WebDriver driver = new FirefoxDriver();
Actions action = new Actions(driver);
action.keyDown(Keys.CONTROL).sendKeys("a").keyUp(Keys.CONTROL).perform();
Cette méthode supprime l'appel supplémentaire (String.ValueOf ()) pour convertir unicode en chaîne.
Actions act = new Actions(driver);
act.keyDown(Keys.CONTROL).sendKeys("a").keyUp(Keys.CONTROL).build().perform();
Ça marche pour moi:
OpenQA.Selenium.Interactions.Actions action
= new OpenQA.Selenium.Interactions.Actions(browser);
action.KeyDown(OpenQA.Selenium.Keys.Control)
.SendKeys("a").KeyUp(OpenQA.Selenium.Keys.Control).Perform();
En utilisant la classe Robot en Java:
import Java.awt.Robot;
import Java.awt.event.KeyEvent;
public class Test1
{
public static void main(String[] args) throws Exception
{
WebDriver d1 = new FirefoxDriver();
d1.navigate().to("https://www.youtube.com/");
Thread.sleep(3000);
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
// Perform [Ctrl+A] Operation - it works
rb.keyPress(KeyEvent.VK_CONTROL);
rb.keyPress(KeyEvent.VK_A);
Thread.sleep(3000);
}
}