我需要按Ctrl + A使用Selenium WebDriver的按鍵。有什麼辦法可以做到嗎?我檢查了Selenium庫,發現Selenium只允許按下特殊鍵和功能鍵。按下按鍵(Ctrl + A)Selenium WebDriver
回答
還有一個解決方案(在Java中,因爲你沒有告訴我們你的語言 - 但它的作品以同樣的方式在所有的語言與Keys
類):
String selectAll = Keys.chord(Keys.CONTROL, "a");
driver.findElement(By.whatever("anything")).sendKeys(selectAll);
您可以用它來選擇<input>
或整個頁面中的全部文本(只需找到html
元素並將其發送給它)。
編輯 - 後OP表示,他使用Selenium Ruby綁定
有在Ruby綁定的Keys
class沒有chord()
方法。因此,哈日雷迪的建議,你將不得不使用Selenium高級用戶交互的API,見ActionBuilder
:
driver.action.key_down(:control)
.send_keys("a")
.key_up(:control)
.perform
和絃方法很有趣,很好的答案。 – 2012-07-17 05:02:35
我錯過了通過語言講述。我使用紅寶石硒 – AJJ 2012-07-20 04:55:49
@Jai編輯與紅寶石銘記。 – 2012-07-20 08:48:44
由於Ctrl鍵 + 甲映射到的ASCII碼值1(Ctrl鍵 + 乙至2,至多,Ctrl鍵 + Ž至26)。
嘗試:
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();
}
}
要點擊按Ctrl + 一個,你可以用操作
Actions action = new Actions();
action.keyDown(Keys.CONTROL).sendKeys(String.valueOf('\u0061')).perform();
\ u0061表示字符 'a'
\ u0041做代表字符'A'
要按其它字符表示的Unicode字符表 - http://unicode.org/charts/PDF/U0000.pdf
不要忘記擁有CONTROL KEY的keyUp,否則在將來的測試中會出現奇怪的錯誤。 – Chexpir 2015-06-02 16:09:10
你可以試試這個:
driver.findElement(By.xpath(id("anything")).sendKeys(Keys.CONTROL + "a");
謝謝你,幫我爲我的Python應用程序,使用'driver.send_keys(Keys.TAB)' – ntk4 2017-09-13 05:08:42
WebDriver driver = new FirefoxDriver();
Actions action = new Actions(driver);
action.keyDown(Keys.CONTROL).sendKeys("a").keyUp(Keys.CONTROL).perform();
這種方法去除多餘的調用(String.ValueOf())將unicode轉換爲字符串。
在用於C#的Selenium中,發送Keys.Control
只需切換控件控件的狀態:如果它啓動,則它變爲關閉;如果它下降了,那麼它就會上升。所以要模擬按下Control + A,發送Keys.Control
兩次,一次發送之前發送「a」,然後發送。
例如,如果我們是輸入IWebElement,下面的語句將選擇其中的所有內容:
we.SendKeys(Keys.Control + "a" + Keys.Control);
謝謝。我一直在尋找這個。 – 2016-05-22 21:16:43
太好了。通過使用您的評論,在使用Rselenium的R lang中,我也得到了Control + A的結果。在這種情況下,我不得不鍵入:'$頁sendKeysToActiveElement(列表(鍵=「控制」,「一」,鍵=「控制」))' – Jalles10 2017-12-02 12:36:13
我發現,在Ruby中,你可以通過兩個參數send_keys
像這樣:
element.send_keys(:control, 'A')
它爲我的作品:
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();
通過在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);
}
}
RB指的是機器人?你初始化rb的地方? :) – Csanesz 2016-11-19 21:45:06
@Csanesz:是的,rb是Robot的實例 – 2017-01-20 06:29:06
您可以將Robot初始化爲:Robot rb = new Robot(); – 2017-01-20 06:37:15
這是用C#(VS2015)硒什麼工作對我來說:
new Actions(driver).SendKeys(Keys.Control+"A").Perform();
你可以使用(+)添加儘可能多的按鍵。
的Java
Robot類的工作將非常有效地通過比硒的SendKeys發送鍵。請嘗試
例:
Robot rb = new Robot();
rb.keyPress(KeyEvent.VK_CONTROL);
rb.keyPress(KeyEvent.VK_A);
使用上述機器人類,你需要import java.awt.Robot;
'
- 1. Selenium WebDriver按下按鈕
- 2. 使用java在Selenium WebDriver中按鍵(Ctrl +鼠標單擊)
- 3. ConsoleCancelEventHandler當按下Ctrl + C鍵
- 4. 檢測Ctrl + Tab鍵按下
- 5. 是否按下'Ctrl'鍵?
- 6. 模擬按住Ctrl鍵同時按下
- 7. 射擊Ctrl + R鍵,Ctrl + A,按鈕上按Ctrl + Q的事件單擊
- 8. 按鍵javascript ctrl鍵
- 9. 接受CTRL +按鍵?
- 10. 如何按Ctrl + A使用Java
- 11. Selenium || Python ||按下按鈕
- 12. C#捕獲按Ctrl + PageUp鍵按鍵
- 13. 我可以確定Ctrl鍵是按下Ctrl還是Right Ctrl?
- 14. 製作Ctrl + C(Ctrl + V,Ctrl + Z,Ctrl + X)鍵盤快捷鍵在Visual Studio中按下一個按鈕
- 15. 按下Ctrl + Shift + Del鍵outof Firefox擴展
- 16. 檢測,如果Ctrl鍵被按下
- 17. 的Java createText不按Ctrl C,Ctrl鍵V
- 18. 如何在使用Java的硒WebDriver中按CTRL + T和CTRL + TAB?
- 19. 按Tab鍵,然後在Selenium WebDriver中用ENTER鍵輸入Ruby
- 20. Ctrl鍵保存下來模擬ctrl鍵按下事件和ctrl鍵向上事件
- 21. 多項選擇,按CTRL鍵
- 22. jquery模仿按鍵「ctrl +」
- 23. GLUT鍵和CTRL鍵上的按鍵
- 24. Selenium ide-如何模擬按鍵ctrl-shift-delete刪除cookies?
- 25. 發送按鍵Ctrl + Shift +用Python單擊Selenium
- 26. 在angular2中如何檢測Ctrl A按鍵?
- 27. WPF - DataGrid的不予辦理按Ctrl + A
- 28. 的SendKeys按Ctrl-A不工作
- 29. 空間的菜單後,按CTRL + A
- 30. 當鍵盤按鍵被按下時,顯示按鈕被按下
您可以得到答案:http://stackoverflow.com/questions/11578768/press -ctrla-to-select-all-content-in-a-page-by-webdriver – 2013-04-01 07:22:58