如何使用Java的Selenium WebDriver按下Ctrl+A选择页面中的所有内容

25

我想通过使用Java的WebDriver在键盘上按 Ctrl+a 来选择所有内容。我编写了以下代码:

Actions actionObj = new Actions(driver);
actionObj.keyDown(Keys.CONTROL)
         .sendKeys(Keys.chord("A"))
         .keyUp(Keys.CONTROL)
         .perform();

不幸的是,它没有起作用。我的WebDriver Java代码哪里错了?

4个回答

40
为了选择整个页面:
driver.findElement(By.xpath("//body")).sendKeys(Keys.chord(Keys.CONTROL, "a"));

css选择器比xpath更快。所以也可以使用CSS路径来完成。以下是方法:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.chord(Keys.CONTROL, "a"));

3
在Linux系统上的Chrome浏览器中,这个解决方案对我无效。可能是什么原因? - yashaka
2
当我使用chord时,出现了“AttributeError: type object 'Keys' has no attribute 'chord'”错误。有什么想法吗? - Usman
2
@baltusaj 你可能使用了错误的Keys。你需要使用org.openqa.selenium.Keys。 - Aura
长期存在的问题是在Mac OS和Chrome驱动程序上:https://bugs.chromium.org/p/chromedriver/issues/detail?id=30 - Lincoln Bergeson
5
在Python中,您只需使用send_keys(Keys.CONTROL + "a")即可实现“@baltoro”的功能。 - Aur Saraf

17

尝试按下Ctrl+A键。以下代码在我的情况下可以正常工作:

element.sendKeys(Keys.chord(Keys.CONTROL, "a"));

是的,这个工作得很好。我访问了www.google.com并选择了谷歌文本框的文本,如下所示:driver.findElement(By.id("gbqfq")).sendKeys(Keys.chord(Keys.CONTROL, "a"));根据您的指示,它运行良好...谢谢。我想选择整个Google页面。我该怎么做? - Ripon Al Wasim
由于我的一些自动化测试中存在漏洞,我偶然发现了这个答案......我使用的 CSS 选择器最终选择了页面上不是输入字段的元素(例如 div 等)......当测试向此元素发送 CTRL+A 时,它最终选择了整个页面。 - Luiz Fernando Penkal
补充上面的评论,Webdriver通常会尽其所能地模拟用户... 当它向不是输入框的元素发送CTRL+A时,发生的情况就像我们手动操作一样(在页面上单击任何不是输入框的位置并按下CTRL+A)。 - Luiz Fernando Penkal
非常感谢。我向页面的一个div发送了CTRL+A,整个页面都被选中了。我的主要目标是选择全部内容。这是一个很好的解决方案,Luiz。 - Ripon Al Wasim
当我使用chord时,由于某种原因,我收到了AttributeError:type object 'Keys' has no attribute 'chord'错误。有什么想法吗? - Usman
C# 中的替代方法是什么? - Ashok kumar Ganesan

1

Mac用户应该使用Cmnd而不是Control:

element.sendKeys(Keys.chord(Keys.COMMAND, "a"));

1

Python

#! /usr/bin/env python

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.service import Service

service_obj = Service(executable_path="C:/Firefox-Webdriver/geckodriver.exe")
browser = webdriver.Firefox(service=service_obj)

browser.get('http://localhost:8000/')
browser.get(url)

body = browser.find_element(By.TAG_NAME, "body")
body.send_keys(Keys.CONTROL + "a")
body.send_keys(Keys.CONTROL + "c")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接