我需要使用Selenium WebDriver(java)按下控制+鼠标单击键。我需要在我的脚本中选择多个元素。 有没有办法做到这一点?
我检查了Selenium库,发现selenium只允许按下特殊键和功能键。
答案 0 :(得分:7)
您可以使用WebDriver中编写的库操作。
简要说明发生的事情:
首先按下“控制”按钮,然后在定义的WebElemen对象上单击(在本例中)3次,然后取消控制并完成操作。
在这种情况下,您可以选择3个项目(或打开3个新标签页),具体取决于您的Web元素。
Actions actions = new Actions(driver);
actions.keyDown(Keys.LEFT_CONTROL)
.click(first_WebElement)
.click(second_WebElement)
.click(third_WebElement)
.keyUp(Keys.LEFT_CONTROL)
.build()
.perform();
答案 1 :(得分:1)
在“操作”的帮助下完成,如下所示:
Actions action=new Actions(driver);
action.keyDown(Keys.CONTROL).build().perform();
driver.findElement(By.xpath(".//*[@id='selectable']/li[1]")).click();
driver.findElement(By.xpath(".//*[@id='selectable']/li[3]")).click();
action.keyUp(Keys.CONTROL).build().perform();
答案 2 :(得分:0)
使用jquery代码实现相同的功能
JavascriptExecutor js = (JavascriptExecutor) driver;
String script = "e = jQuery.Event('click');e.ctrlKey = true; $('secondRow_Css_locator').trigger(e);";
js.executeScript(script);
或者您也可以使用机器人类,但它可以暂时锁定您的屏幕
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
答案 3 :(得分:0)
从2018年开始弹出第一个结果。在FF 61之后(从47到61的直接跳转),它的工作状况还不错。不幸的是,没有答案对我有用。通过action.keyDown(Keys.CONTROL).click(myWebElements.get(i)).keyUp(Keys.CONTROL).perform();
对其进行解决,只需逐个迭代每个元素
答案 4 :(得分:0)
在使用Mac的情况下,接下来是te代码:
use futures::{sync::mpsc::unbounded, Future, Stream}; // 0.1.27
fn main() {
let (tx, rx) = unbounded::<&mut usize>();
let mut val = 10;
{
let bor = &mut val;
tx.unbounded_send(bor);
rx.for_each(|item| {
println!("Item: {}", item);
*item = 20;
Ok(())
})
.wait();
}
}