如果浏览器的缩放级别为100%,则UI上不会显示其中一个按钮,因此一旦我使用以下代码放大,该特定按钮就会显示在UI上
driver.execute_script("document.body.style.zoom='80%'")
但即使按钮在放大状态下出现在按钮上,也不会对该特定按钮执行操作,而是收到此错误消息
{WebDriverException}消息:未知错误:元素 在点(891,568)处不可点击。其他 元素将收到点击:(会话信息: chrome = 58.0.3029.110)(驾驶信息:chromedriver = 2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform = Windows NT 6.1.7601 SP1 x86)
我的本地计算机上没有问题,因为当浏览器的缩放级别为100%时,UI上会显示该特定按钮,因为我无需放大,所以效果很好。
但是因为我必须使用客户端机器远程连接的虚拟盒,所以我遇到了这个UI问题。由于虚拟框屏幕出现在我的客户端计算机屏幕内,因此其高度会降低,并且特定按钮会从底部的UI消失。
因此需要放大以执行此操作并再次将缩放级别重置为100%。我在这里做错了什么,或者有其他方法可以解决这个问题吗?
答案 0 :(得分:1)
您可以使用ActionChains类
模拟滚动from selenium.webdriver.common.action_chains import ActionChains
element = driver.find_element_by_...
ActionChains(driver).move_to_element(element).perform()
element.click()
答案 1 :(得分:0)
我有同样的问题。驱动程序通常应该滚动到每个Click上的元素,它确实如此,但它滚动只是因为元素几乎不可见。
所以它有时可以被另一个元素覆盖,而驱动程序认为元素是可见的,然后是一个异常。
我在这里找到了一个很好的解决方法:selenium scroll element into (center of) view
中心页面,因此元素位于页面中间:
在C#中:
var js = d as IJavaScriptExecutor;
String scrollElementIntoMiddle = "var viewPortHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);"
+ "var elementTop = arguments[0].getBoundingClientRect().top;"
+ "window.scrollBy(0, elementTop-(viewPortHeight/2));";
js.ExecuteScript(scrollElementIntoMiddle, element);
element.Click();
我最初尝试缩小,但至少在使用Chrome时,Selenium在缩小时根本无法工作,因此无法正常工作。
答案 2 :(得分:0)
对于测试自动化,如果我们必须处理远程机器(例如Sauce实验室),那么认真对待屏幕分辨率总是有益的。
在当今响应式网站的世界中,我们需要经常更改浏览器窗口大小,这一要求变得更加有效。
在酱料实验室中,我们使用以下
以编程方式更改客户端计算机的分辨率capabilities.setCapability("screenResolution", "1920x1080");
对于不同的设置,我们可能需要按照上面@ShoaibAkhtar的评论中提到的步骤进行操作。