Selenium Chrome驱动程序在最小化chromedriver时崩溃



我正在制作一个机器人,它应该能帮助我找到一个出租屋,这在目前非常困难。机器人的目标是在我正在抓取的网站上自动检查新公寓。

我正在做一个while循环,检查刮削的元素列表中是否有任何更改。然后页面应该自行刷新,直到抓取的元素列表发生变化(列表中的更多、更少或其他元素(。如果它改变了,它应该发出警报信息等

现在的问题是,当我最小化/关闭chrome驱动程序或单击VS代码时,它会崩溃并清空列表。日志中没有错误,因为代码认为列表为空,而页面不为空。。

谢谢你的帮助!完整代码低于

def create_driver():
options = Options()
options.add_experimental_option("detach", True)
service = Service(executable_path="/usr/local/bin/chromedriver")
driver = webdriver.Chrome(service=service, options=options)
return driver

def login(driver):
driver.find_element(By.NAME, 'txtEmail').send_keys('XXXXXXXX@gmail.com')
driver.find_element(By.NAME, 'txtWachtwoord').send_keys('XXXXXXXXX')
WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
(By.XPATH, '//*[@id="CybotCookiebotDialogBodyButtonAccept"]'))).click()
driver.find_element(By.CLASS_NAME, 'btn-secondary').click()

def search_page(driver):
driver.find_element(By.XPATH, "//a[@href='/zoekopdracht/']").click()

def list_of_woningen(driver):
woningen = []
woningLijst = driver.find_elements(By.CLASS_NAME, "stretched-link")
for x in woningLijst:
woningen.append(x.text)
return woningen

def check_for_changes(driver, old_list):
print("Checking for changes")
new_list = list_of_woningen(driver)
if old_list == new_list:
print("No changes found")
return False
else:
print("Changes found")
print("Old list: ", old_list)
print("New list: ", new_list)
return True

def start_session(driver, url):
driver.get(url)
login(driver)
search_page(driver)
old_list = list_of_woningen(driver)

while not check_for_changes(driver, old_list):
WebDriverWait(driver, 10)
#time.sleep(5)  # 30 seconds
# a better approach for this, is to make a wait thread, if there are other functionalities for tha program
driver.refresh()
else:

print("ALERT!!!")
# return driver.page_source
if __name__ == '__main__':
start_session(create_driver(), 'https://hurenbij.vesteda.com/')
No changes found
Checking for changes
No changes found
Checking for changes
No changes found
Checking for changes
No changes found
Checking for changes
Changes found
Old list:  ['Bankierbaan 140', 'Boekbinderstraat 3', 'Rozemarijntuin 87', 'Parkzicht 78', 'Brinklaan 138B 1', 'Wijde Wormer 222', 'Sjees 16', 'Fideliolaan 258D', 'Kapittelweg 428', 'Haendelplein 107', 'Haendelplein 55', 'Bankierbaan 234', 'Parkzicht 35', 'Rozemarijntuin 85', 'Rozemarijntuin 101', 'Maan Bastion 170', 'Slachthuisstraat 165', 'Parkzicht 94', 'Slachthuisstraat 145', 'Reimsstraat 9', 'Sir Winston Churchillln 755', 'Sir Winston Churchillln 509']
New list:  ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
ALERT!!!

以下chromedriver选项成功了!只是添加无头不起作用。您应该始终添加一个窗口大小以使其工作。添加禁用gpu是因为一段时间后出现超时错误。希望我能用这个解决方案帮助别人!

options.add_argument("--headless") 
options.add_argument("window-size=1920x1080")
options.add_argument("--disable-gpu")

最新更新