我有一个从网站获取信息的项目。我想要查看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)