gpt4 book ai didi

java - 如何在 Selenium 3.6 中使用 IE11 执行 Shift 点击

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:56 30 4
gpt4 key购买 nike

public void shiftClick() {
if(WebBrowser.isInternetExplorer()) {
try {
Robot robot = new Robot();
try {
WindowManagement.setBrowserFocus();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_SHIFT);
this.clickElement();
robot.keyRelease(KeyEvent.VK_SHIFT);
} catch (AWTException e) {
throw new AssertionError(e.getMessage());
}

} else {
Actions actions = new Actions(Browser.getWebDriver(null));
actions.keyUp(Keys.SHIFT).click(this.getWebElement()).keyUp(Keys.SHIFT).perform();
}
}

我将 selenium 从 2.53 升级到 3.6.0 后,Shift 单击不起作用。我尝试过AWT机器人方法,也尝试过Action key方法。还有其他方法可以执行shift点击吗?

最佳答案

在 IE 中使用 WebDriver 的提示(其中一些您可以找到 here ):

  • 在 IE 选项中禁用增强保护模式
  • 将浏览器缩放级别设置为 100%
  • 对于 Windows 10,您还需要在显示设置中将“更改文本、应用和其他项目的大小”设置为 100%。
  • 仅对于 IE 11,您需要设置一个注册表项 - 创建一个名为 iexplore.exe 且值为 0 的 DWORD 值:
    • 对于 32 位 Windows:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
    • 对于 64 位 Windows:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
  • 将每个区域的保护模式设置设为相同的值
  • 使用requireWindowFocus选项
  • 尝试启用enableNativeEvents,有时会有帮助
  • 始终最大化 IE 窗口
  • 在单击元素之前滚动到该元素,以使该元素在屏幕内可见,如果该元素位于 IE 窗口之外,则单击通常不起作用
<小时/>

IE11 Windows 10 WebDriver 3.6.0 的工作示例。
对于此页面:w3schoold click whith SHIFT key pressed
它展示了如何检测单击元素时是否按下了 SHIFT 键。

WebDriver driver= null;
try{
InternetExplorerOptions opt = new InternetExplorerOptions();
// opt.enableNativeEvents();
opt.requireWindowFocus();

driver=new InternetExplorerDriver(opt);

driver.manage().window().maximize();

driver.get("https://www.w3schools.com/js/tryit.asp?filename=tryjs_dom_event_shiftkey");

final By clickOnThis = By.xpath("//p[ text() = 'Click on this paragraph. An alert box will tell you if you pressed the shift key or not.' ]");
final By message = By.xpath("//p[ text() = 'The shift key was pressed!' ]");

WebDriverWait wait = new WebDriverWait( driver, 5 );

driver.switchTo().defaultContent();
driver.switchTo().frame("iframeResult");

WebElement clickOnMe = wait.until(ExpectedConditions.visibilityOfElementLocated(clickOnThis));

Actions actions = new Actions( driver );

actions.keyDown(Keys.SHIFT).click(clickOnMe).keyUp(Keys.SHIFT);
actions.build().perform();

wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(message));

System.out.println("SHIFT-cLick detected");

Thread.sleep(5000);
}finally {
if(driver!=null) {
driver.quit();
}
}

关于java - 如何在 Selenium 3.6 中使用 IE11 执行 Shift 点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47010473/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com