Estou fazendo um aplicativo usando o Python para analisar uma página da web. Para referência, este é o código do programa:
import csv
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)
logging.info('first log')
listsof = []
driver = webdriver.Firefox()
logging.info('Setup driver')
driver.implicitly_wait(30)
logging.info('next step')
driver.get("https://www.lacrossealerts.com/login")
logging.info('Got webpage')
username = driver.find_element_by_name('username')
password = driver.find_element_by_name('password')
login = driver.find_element_by_name('login')
logging.info('Got elements')
username.send_keys("username")
password.send_keys("password")
password.send_keys(Keys.RETURN)
logging.info('Hit enter')
test = driver.find_elements_by_class_name('row-val')
contents = driver.page_source
test1 = driver.find_elements_by_class_name('row-val')
test2 = driver.find_element_by_class_name('timestamp')
logging.info('Found elements')
listsof.append(test2.text)
for e in test1:
print(e.text)
listsof.append(e.text)
print(listsof)
logging.info('Step before write to CSV')
with open('C:/Users/MyUser/Downloads/weather.csv', 'a', newline='') as csvfile:
writer = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
writer.writerow(listsof)
driver.close()
logging.info('Wrote to CSV')
Neste, eu tive alguns registros. Eu entendo isso:
INFO:root:first log
DEBUG:selenium.webdriver.remote.remote_connection:POST http://127.0.0.1:65058/hub/session {"sessionId": null, "desiredCapabilities": {"platform": "ANY", "javascriptEnabled": true, "version": "", "browserName": "firefox"}}
DEBUG:selenium.webdriver.remote.remote_connection:Finished Request
INFO:root:Setup driver
DEBUG:selenium.webdriver.remote.remote_connection:POST http://127.0.0.1:65058/hub/session/5cdbbf60-3a9f-4eca-96d2-7a026c47b56d/timeouts/implicit_wait {"sessionId": "5cdbbf60-3a9f-4eca-96d2-7a026c47b56d", "ms": 30000.0}
DEBUG:selenium.webdriver.remote.remote_connection:Finished Request
INFO:root:next step
DEBUG:selenium.webdriver.remote.remote_connection:POST http://127.0.0.1:65058/hub/session/5cdbbf60-3a9f-4eca-96d2-7a026c47b56d/url {"url": "https://www.lacrossealerts.com/login", "sessionId": "5cdbbf60-3a9f-4eca-96d2-7a026c47b56d"}
DEBUG:selenium.webdriver.remote.remote_connection:Finished Request
INFO:root:Got webpage
DEBUG:selenium.webdriver.remote.remote_connection:POST http://127.0.0.1:65058/hub/session/5cdbbf60-3a9f-4eca-96d2-7a026c47b56d/element {"using": "name", "sessionId": "5cdbbf60-3a9f-4eca-96d2-7a026c47b56d", "value": "username"}
Parece que não passa de uma dessas linhas:
username = driver.find_element_by_name('username')
password = driver.find_element_by_name('password')
login = driver.find_element_by_name('login')
Este poderia ser um problema de rede ou de internet, que não tem as permissões adequadas? Existe mais alguma coisa? Quando eu executo isso em um arquivo de lote:
cd C:\Users\User\Downloads
python weather.py
Funciona perfeitamente. Estou executando isso como uma tarefa agendada, na minha conta de usuário. Quando está definido para Run only when this user is logged on
, funciona perfeitamente. No entanto, quando tento executá-lo na conta de usuário do sistema ou Run whether this user is logged on or not
, ele não conclui a tarefa. Eu gostaria que a tarefa (cmd e lança o Firefox) não fosse exibida para o usuário, a fim de não atrapalhar o seu trabalho, já que ele está rodando a cada 20 minutos, mas isso não está funcionando. Existe algum problema com a maneira como estou fazendo isso? Existe uma maneira melhor de "ocultar" isso do usuário?