当Selenium在运行时,我能否最小化Chrome窗口?

5

我有一个从网站获取信息的项目。我想要查看Chrome窗口内部的进程,所以我不能使用无头浏览器。但是有时我希望最小化Chrome窗口。

但我发现当我手动最小化Chrome窗口后,Selenium会出现问题,但有时候不会。出现问题时,会引发异常:

元素在当前位置无法被点击,因为其他元素会接收到点击

或者有时候Selenium会停止工作。

我搜索了很久,有些人说Chrome窗口应该聚焦,并且不能通过单击窗口标题栏上的“-”来最小化。另一种替代解决方案是:

web.set_window_position(-2000,-2000)

将窗口移出屏幕。

有人说可以通过模拟快捷键来最小化窗口。但我认为这与手动单击“-”是一样的,我错了吗?

我的问题是:

  • Selenium是否真的需要Chrome窗口未最小化?为什么有时可以正常运行Selenium而有时候不行?
  • 如果我使用

    set_window_position(-2000,-2000)

    将窗口移动到不可见的位置,然后单击操作系统底部的窗口图标(对不起,我不知道它叫什么)。在正常情况下,单击后窗口将被最小化。那么对于这个Chrome窗口,它会被视为最小化的窗口并出错吗?

非常抱歉我的英语比较差,我希望我能清楚地描述我的问题。

环境:

  • Python 3.6
  • Chrome 66.0
  • Selenium 3.11.0
  • Windows Server 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)

你是否明确地移动到页面上具有该元素的部分或在出现“元素不可点击”错误之前关闭可能阻止它的任何元素?你应该绝对能够在Chrome窗口最小化的情况下运行带有Chrome的Selenium - 我经常这样做。 - n1c9
我确信页面是正确的,没有其他元素阻挡它,因为我已经运行了2个小时,但当我最小化窗口,然后大约2分钟后,它出现了问题。 - Yanfeng Li
1个回答

2
如果你在这里看到了这个问题Debugging "Element is not clickable at point" error,那么这是chromedriver中的一个bug导致的。它的问题在这里被创建。第27条评论中列出了一种解决方法,但你可以尝试切换到firefox驱动程序并查看是否有效。最小化的窗口不应该造成问题。

当我最小化窗口时,会出现错误:Display :: DrawAndSwap,LatencyInfo向量大小为102太大。但是当我将其最大化时,错误就不会发生。你能告诉我如何修复它吗?感谢你的回答! - Yanfeng Li
我已经在问题中发布了我的代码。这段代码可以在我的本地桌面上最小化运行,但在远程Windows Server 2012上失败了。提前感谢! - Yanfeng Li
好的,有很多事情你需要自己检查。你是这台远程机器的管理员吗?它是否安装了我在答案中提到的存在缺陷的不同版本chromedriver?我们无法凭空给你一个解决方案。 - rassa45
另外,我刚刚注意到,您之前曾经问过这个问题,但由于重复而被关闭。希望您能理解,您违反了StackOverflow的规定,不能再次提出同样的问题。 - rassa45
非常抱歉。我是StackOverflow和Selenium的新手,我认为它们是两个不同的问题,一个是关于被阻止的元素,另一个是关于窗口重绘的问题。但它们都发生在最小化之后。我已经向管理员解释了我的看法。也许我错了,可能是重复的问题,但我并不是有意这样做的。无论如何,感谢您的耐心和帮助,我会查找一些关于窗口的信息。 - Yanfeng Li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接