【问题标题】:Is there a way to zoom out in chrome using c# and selenium other than CSS zoom?除了 CSS 缩放之外,有没有办法使用 c# 和 selenium 来缩小 chrome?
【发布时间】:2018-12-14 16:29:32
【问题描述】:

我使用 selenium 访问网页(角度)。如果我在 chrome 中手动缩小页面,则会出现菜单并且更易于导航。我想对 selenium 和 c# 做同样的事情。很多帖子都提出了类似的问题,但并不完全相同。让我解释一下:

  1. css 缩放

    ((IJavaScriptExecutor)driver).ExecuteScript("document.body.style.zoom = '70%'");
    

    页面被缩小了但是angular网页没有检测到,隐藏的菜单没有显示出来,所以对我不好。

  2. 按键缩放:

    new Actions(driver).SendKeys(Keys.Control).SendKeys(Keys.Subtract).Perform();
    

    它不会改变我的缩放级别。没有例外,它只是什么都不做。我尝试了其他 SendKeys 方法但没有成功。

  3. 使用 chrome 设置缩放

    driver.Url = "chrome://settings";
    ((IJavaScriptExecutor)driver).ExecuteScript("chrome.settingsPrivate.setDefaultZoom(0.66);");
    

    这会更改缩放级别,但在第一行之后会出现错误消息:“无法从内部尚未存在的加载辣椒模块”。 之后,webdriver 工作不正常。例如,单击以前可以工作的按钮的代码不再工作。

有什么新想法吗?

【问题讨论】:

  • 什么触发了菜单切换?
  • 回答:@KoshVery。如果网页没有缩小,则必须按下图标才能显示菜单。我可以做到,但缩小会更容易。在这种情况下,网页会自行“重新对齐”,并且菜单将可见。如果我使用 css-zoom 则网页会缩小但不显示菜单。

标签: css selenium-webdriver selenium-chromedriver


【解决方案1】:

要缩小作为替代方案,您可以使用以下解决方案:

((IJavaScriptExecutor)driver).ExecuteScript("document.body.style.transform='scale(0.6)';");

注意:在 测试执行 期间通过 Selenium 放大/缩小到 100% 以外的任何值都可能导致您的 不稳定测试。具体来说,Internet Explorer DriverRequired Configuration 部分明确提到:

必须将浏览器缩放级别设置为 100%,以便可以将本机鼠标事件设置为正确的坐标。

【讨论】:

  • OP 专门讨论的是 chromedriver……你为什么要讨论 IE 的配置?
  • 这个解决方案只是“css zoom”的另一个版本。它缩小但角度网页没有检测到它,隐藏的菜单不显示。
  • 修改document.body.style.zoom会打乱复杂页面的页面布局;这不是一个通用的解决方案
【解决方案2】:

我发现“2. 按键缩放”由于 chromedriver 的缺点而不起作用。见https://stackoverflow.com/a/43665060/5852947

更重要的是,即使您手动缩小 chromedriver 也有另一个问题。见https://bugs.chromium.org/p/chromedriver/issues/detail?id=628

driver.FindElement(...) 在缩小时无法正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2015-11-06
    相关资源
    最近更新 更多