Я делаю приложение, используя Python для разбора веб-страницы. Для справки это код программы:
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')
В этом у меня была некоторая регистрация. Я получаю это:
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"}
Таким образом, похоже, что он не проходит ни одну из этих строк:
username = driver.find_element_by_name('username')
password = driver.find_element_by_name('password')
login = driver.find_element_by_name('login')
Может ли это быть проблемой сети или интернета, что у нее нет необходимых разрешений? Есть что-то еще? Когда я запускаю это в командном файле:
cd C:\Users\User\Downloads
python weather.py
Работает отлично. Я запускаю это как запланированное задание в моей учетной записи. Когда он установлен на Run only when this user is logged on
, он работает отлично. Однако, когда я пытаюсь запустить его с учетной записью "Системный пользователь" или « Run whether this user is logged on or not
, задача не завершается. Я хотел бы, чтобы задача (cmd и запускает Firefox) не отображалась пользователю, чтобы не мешать его работе, поскольку она выполняется каждые 20 минут, но это не работает. Есть ли проблема с тем, как я это делаю? Есть ли лучший способ "скрыть" это от пользователя?