【问题标题】:Can I minimize chrome window while selenium is running?我可以在 selenium 运行时最小化 chrome 窗口吗?
【发布时间】:2018-05-23 17:45:49
【问题描述】:

我有一个从网站获取一些信息的项目。 我想看看chrome窗口里面的进程,所以我不能使用无头浏览器。但有时我想最小化 chrome 窗口。

但是我发现手动最小化chrome窗口后selenium会出错,但有时不会。出错时异常

此时元素不可点击,其他元素会收到点击

会被提升,或者有时 selenium 会停止。

找了半天有人说chrome窗口应该是焦点,不能通过点击窗口标题栏上的'-'来最小化。替代解决方案是:

web.set_window_position(-2000,-2000)

使窗口移出屏幕。

还有人说通过模拟快捷键来最小化窗口。但是我觉得和手动点击'-'是一样的,我错了吗?

我的问题是:

  • selenium 真的需要 chrome 窗口不最小化吗?为什么有时候最小化后可以正常运行selenium,有时候不行?
  • 如果我使用

    set_window_position(-2000,-2000)

    要使窗口不可见,然后单击 os 底部的窗口图标(对不起,我不知道它叫什么)。通常单击时,窗口将被最小化。那么对于这个chrome窗口,会不会被认为是最小化窗口而出错呢?

我真的很抱歉我的英语不好。我希望我能清楚地描述我的问题。

环境:

  • python 3.6
  • 铬 66.0
  • 硒 3.11.0
  • Windows 服务器 2012

编辑以添加代码:

wait.WebDriverWait(driver,100000).until(EC.visibility_of_element_located((By.ID,'commMgrCompositionMessage')))
        textArea = driver.find_element_by_id('commMgrCompositionMessage')
        driver.execute_script("arguments[0].value="+"'"+modelStr+"';",textArea)
        time.sleep(1)
        wait.WebDriverWait(driver,10000).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'#sendemail_label')))
        allSendMailLabel = driver.find_elements_by_css_selector('#sendemail')
        allSendMailLabel = allSendMailLabel[1]
        driver.execute_script("arguments[0].click();", allSendMailLabel)

【问题讨论】:

  • 在收到 Element not clickable 错误之前,您是否明确移动到包含该元素的页面部分或关闭任何可能阻止它的元素?您绝对应该能够在 Chrome 窗口最小化的情况下运行带有 Chrome 的 Selenium - 我一直这样做。
  • 我确定页面是正确的,没有其他元素阻止它,因为我已经运行了 2 个小时,但是当我最小化窗口时,大约 2 分钟后,它出错了。

标签: python google-chrome selenium


【解决方案1】:

如果您在这里看到问题Debugging "Element is not clickable at point" error,则 chromedriver 中存在导致此问题的错误。它的问题是由here 创建的。第 27 条评论中列出了一种解决方法,但是您可以做的是切换到 firefox 驱动程序,看看它是否有效。否则,最小化的窗口不应引起问题。

【讨论】:

  • 当我最小化窗口时,会出现错误:Display::DrawAndSwap, LatencyInfo vector size 102 is too big.但是当我最大化它时,错误就不会发生。你能告诉我如何解决吗?感谢您的回答!
  • 我已经在这个问题上发布了我的代码。并且代码可以在我的本地桌面上以最小化的方式运行,但在远程 Windows Server 2012 上失败。感谢您的提前!
  • 好吧,你需要检查自己的东西太多了。您是这台远程机器的管理员吗,它是否有不同版本的 chromedriver 存在我在回答中所述的错误?我们不能凭空为您提供解决方案。
  • 另外,我刚刚注意到,你之前问过这个问题,它因为重复而被关闭。我希望您理解您再次提出相同问题时违反了 StackOverflow 规则。
  • 对此我感到非常抱歉。我是 StackOverflow 和 selenium 的新手,我认为它们是两个不同的问题,可能一个用于阻塞元素,另一个用于窗口重绘。但是它们都是在最小化之后发生的。我已经向管理员解释了我的意见。也许我是错误的和重复的,但我不是故意的。无论如何感谢您的耐心和帮助,我会检查一些有关窗户的信息。
猜你喜欢
  • 2023-04-07
  • 2011-09-17
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
相关资源
最近更新 更多