今天有同事在我们测试平台上编写UI测试用例,有个【确定】按钮在页面上可以正常操作,根据所写的xpath路径也能找到这个元素。但是在执行UI脚本时报错:提示is not clickable at point (1183, 607)。
2022-06-20 11:50:55:674:ERROR autotestclient.execution.webdriver.ex.WebCaseExecution.runWebStep(WebCaseExecution.java:226) – 元素定位过程或是操作过程失败或异常!
org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element … is not clickable at point (1183, 607). Other element would receive the click: …
(Session info: chrome=102.0.5005.115)
Build info: version: ‘3.141.59’, revision: ‘e82be7d358’, time: ‘2018-11-14T08:17:03’
System info: host: ‘LAPTOP-DHR34KHR’, ip: ‘172.30.192.1’, os.name: ‘Windows 10’, os.arch: ‘amd64’, os.version: ‘10.0’, java.version: ‘1.8.0_73’
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 102.0.5005.115, chrome: {chromedriverVersion: 101.0.4951.41 (93c720db8323…, userDataDir: C:UsersADMINI~1AppDataL…}, goog:chromeOptions: {debuggerAddress: localhost:22005}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true}
Session ID: f2569c51b6fe8840df94fdbc5ac4b09c
一开始以为是页面元素未加载出来、或者被其他页面元素覆盖了、或者页面元素是在iframe层里面。经排查,这个报错并不是非以上常见的原因。
于是从网上搜索解决办法,网上给出的解决办法基本上都是使用js模拟鼠标点击的办法,使用该方法的确可以点【确定】按钮,但是它把所有的弹窗页面都关闭。不得其解,只能另找途径进行解决。
WebElement element = driver.findElement(By.xpath(“element_xpath”));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript(“arguments[0].click();”, element);
最终,笔者突然想到,在webdriver中,有专门的一个类,是用来进行鼠标、键盘的模拟操作的,那就是Actions类,或许可以使用这种折中的解决办法,来模拟鼠标左键单击页面元素操作。问题最终得以解决。
#页面元素
WebElement element = driver.findElement(By.xpath(“element_xpath”));
Actions action = new Actions(driver);
#模拟鼠标左键单击页面元素
action.click(element);