我的测试完全适用于Chrome 60和ChromeDriver 2.31,但在Chrome更新到61版后,我不得不将ChromeDriver更新为2.32。现在我得到零星的org.openqa.selenium.WebDriverException:未知错误:元素在点(X,Y)处无法点击 - 在所有为移动设备模拟器运行的测试中,例如" iPhone 6 Plus&#34 ;浏览器模式,
例如。
作为一种解决方法,我可能会在点击之前使用滚动到元素,但它只是一个快速解决方案,并且知道这个问题来自哪里更好。这是当前最新的Chrome和驱动程序版本的问题吗?它会很快修复吗?
问题在本地和远程webdriver上重现。
堆栈跟踪:
org.openqa.selenium.WebDriverException:未知错误:元素不是 点击时可以点击(182,3724)(会话信息:chrome = 61.0.3163.91)
(司机信息:chromedriver = 2.32.498550 (9dec58e66c31bcc53a9ce3c7226f0c1c5810906a),platform = Windows NT 10.0.15063 x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:115毫秒构建信息: 版本:' 3.4.0',修订版:'未知',时间:'未知'系统信息: 主持人:' xxx',ip:' 10.100.8.33',os.name:' Windows 10',os.arch: ' amd64',os.version:' 10.0',java.version:' 1.8.0_131'司机信息: org.openqa.selenium.chrome.ChromeDriver功能 [{applicationCacheEnabled = false,rotate = false, mobileEmulationEnabled = true,networkConnectionEnabled = false, 铬= {chromedriverVersion = 2.32.498550 (9dec58e66c31bcc53a9ce3c7226f0c1c5810906a), userDataDir = C:\用户\ XXX \应用程序数据\本地\ TEMP \ scoped_dir5912_31757}, takesHeapSnapshot = true,pageLoadStrategy = normal, databaseEnabled = false,handlesAlerts = true,hasTouchScreen = true, version = 61.0.3163.91,platform = XP,browserConnectionEnabled = false, nativeEvents = true,acceptSslCerts = true,locationContextEnabled = true, webStorageEnabled = true,browserName = chrome,takesScreenshot = true, javascriptEnabled = true,cssSelectorsEnabled = true,setWindowRect = true, unexpectedAlertBehaviour = dismiss}]会话ID: 2ead932fef8d0d923286ac41c8fffe50命令持续时间或超时:257 毫秒
我猜这与https://bugs.chromium.org/p/chromedriver/issues/detail?id=1852
有关答案 0 :(得分:4)
Chrome驱动程序开发人员知道此修复程序在移动设备模拟模式下无法正常运行。 ChromeDriver 2.33即将解决此问题。
答案 1 :(得分:1)
您需要将Chrome版本降级到59.0(32位),因为新版Chrome更新存在一些问题。 要么 您需要先滚动到元素,然后尝试单击
答案 2 :(得分:1)
我不是很确定,但你的问题听起来非常像我的问题。在浏览器更新后,我的测试似乎无法使用内置的move_to_element()Selenium方法滚动到元素。
这是我在python中编写的解决方法
def scroll_to_element(element):
self.driver.execute_script("window.scrollTo(0, %d);" %
element.location['y'])
作为临时解决方案 - 尝试滚动到元素,然后尝试单击它。希望这对你有所帮助。
答案 3 :(得分:0)
对此有另一种解决方案:
首先最大化窗口:
driver.manage().window().maximize();
其次,您可以将Action类用于moveToElement
方法并访问它
WebElement element = driver.findElement(By("element"));
Actions action = new Actions(driver);
action.moveToElement(element).click().perform();
答案 4 :(得分:0)
尝试点击使用javascript,它适用于我。
WebElement element = driver.findElement(By.id("gbqfd"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
答案 5 :(得分:0)
我有同样的问题(movetoelement在使用chromedriver2.32和Chrome61 +的模式movilemulation中什么都不做),对我来说唯一的解决方案是回到Chrome60。您可以获取旧版本的chrome https://www.slimjet.com/chrome/google-chrome-old-version.php
当chromedriver2.33到达时,我将再次测试Chrome61 +