如何使无头浏览器可见Python

时间:2017-12-25 21:57:55

标签: python selenium webdriver headless google-chrome-headless

我通过设置此参数创建了一个无头webdriver chrome浏览器:

driver = webdriver.Chrome(executable_path=os.path.abspath("chromedriver"), chrome_options=chrome_options)

然后使用以下命令打开浏览器:

chrome_options.arguments.remove("--headless")

一旦满足条件,是否可以使浏览器出现?我尝试使用以下方法再次删除该属性:

<form name="myForm"  novalidate >
<input type="text" name="title"   [(ngModel)]="question.title" ng-required="true" /><br>
<input type="text" name="desc"   [(ngModel)]="question.desc" ng-required="true" /> <br>
<input type="button" (click)="PostQuestion()" ng-disabled="!myForm.title.$valid" name="submit" value="Post question" /> </form>

但这没有做任何事情。

3 个答案:

答案 0 :(得分:1)

通过设置以下内容来启动--headless 实例:

chrome_options.add_argument("--headless")

此外,将不可能在同一会话中再次显示浏览上下文


原因

在启动新的 Chrome浏览器会话的过程中,使用ChromeOptions()配置ChromeDriver来启动时,配置会被烘焙 strong>放入 chromedriver 可执行文件,并将一直保留到 WebDriver 的生存期,并保持不可编辑。因此,您可以修改当前正在执行的 WebDriver 实例的 ChromeOptions

即使您能够提取 ChromeDriver ChromeSession 属性,例如来自已启动的 ChromeDriver Chrome浏览器会话会话ID 和其他会话属性,您仍然不会能够更改 ChromeDriver 的属性集。

一种更清洁的方法是在driver.quit()方法中调用 tearDown(){} 关闭销毁当前的< em> ChromeDriver 和 Chrome浏览器实例,然后跨一组新的 ChromeDriver Chrome浏览器实例以及一组新的配置。


参考文献

您可以在以下位置找到一些相关的讨论

答案 1 :(得分:0)

当您将--headless参数传递给chrome时,它实际上是将实例创建为无头,而不是创建窗口并隐藏它,如果要在条件满足时显示实例,则必须考虑不使用--headless在chrome params。

答案 2 :(得分:0)

在会话开始后,您无法从Selenium会话中删除选项/参数。每个Selenium会话都使用唯一的会话ID创建,并使用传递给它的参数运行,直到被询问.quit()。如果您在启动时将--headless选项传递给它,则无法观看您的Chrome会话。