出于市场原因,我正在使用硒打开一些浏览器窗口。我只是打开我的营销渠道,通过硒登录并开始工作。
问题是,在执行代码后,硒将关闭窗口。
到目前为止,所有解决方案都没有太大帮助。
我有13个浏览器窗口atm。如下所示:
def open_instagram():
try:
# Connect
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")
browser = webdriver.Chrome('drivers/chromedriver.exe', chrome_options=chrome_options)
browser.set_window_size(1800, 900)
browser.get("https://www.instagram.com/accounts/login/?hl=de")
browser.find_element(By.NAME, 'username').send_keys('MYEMAIL', Keys.TAB, 'MYPW', Keys.ENTER)
except Exception as e:
print (e, 'Instagram')
open_instagram()
我找到的最接近的解决方案是在脚本的末尾添加此内容,但是不知何故,它只能保持5个窗口打开,而不是关闭5个窗口并打开接下来的5个新窗口:
while True:
pass
我只希望硒使所有浏览器窗口保持打开状态,直到我手动关闭它们为止。
答案 0 :(得分:5)
如果您希望chrome和chromedriver保持打开状态,则在启动chromedriver时必须使用“ detach”选项。
根据您的情况添加:
from selenium.webdriver.chrome.options import Options
chrome_options.add_experimental_option("detach", True)
或者,您可以在调试模式下以结尾处的断点运行代码,并且当程序暂停“杀死”程序并接管浏览器时(如果需要),但这仅在IDE中有效。
编辑-为清楚起见添加了导入
答案 1 :(得分:1)
您还可以像这样添加global browser
:
try:
# Connect
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")
global browser # this will prevent the browser variable from being garbage collected
browser = webdriver.Chrome('drivers/chromedriver.exe', chrome_options=chrome_options)
browser.set_window_size(1800, 900)
browser.get("https://www.instagram.com/accounts/login/?hl=de")
browser.find_element(By.NAME, 'username').send_keys('MYEMAIL', Keys.TAB, 'MYPW', Keys.ENTER)
except Exception as e:
print (e, 'Instagram')
open_instagram()