дата / время в селене - PullRequest
       1

дата / время в селене

0 голосов
/ 05 декабря 2018

Код ниже дает ошибку, поскольку «пятница» не определена.Если чего-то не хватает, пожалуйста, помогите мне с тем же.Также, если я поменяю местами переменные 'пятница' и 'prev_day' с if else, я получу сообщение об ошибке с 'prev_day' не определенным.

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import datetime


d = datetime.date.today()

if d.weekday() == 0:
    tdelta = datetime.timedelta(days=3)
    friday = d - tdelta


elif d.weekday() in range(1,5):
    tdelta1 = datetime.timedelta(days=1)
    prev_day = d - tdelta1


class ClassName(unittest.TestCase):

    def setUp(self):

        self.driver = webdriver.Chrome(executable_path="C:\\Users\sameerj\IdeaProjects\chromedriver.exe")


    def test_as_on_date(self):

        driver = self.driver
        driver.maximize_window()
        driver.get("website")
        login = driver.find_element_by_id("Email")
        login.send_keys("email")
        password = driver.find_element_by_id("Password")
        password.send_keys("password")
        password.send_keys(Keys.ENTER)
        driver.find_element_by_id("menu_name").click()
        driver.find_element_by_partial_link_text("page name").click()
        date = driver.find_element_by_id("lblAsOn").text
        new = datetime.datetime.strptime(date,'%m/%d/%Y')
        data_date = new.date()

        if data_date == friday:
            print("Data as on", friday, "for page name")
        elif data_date == prev_day:
            print("Data as on", prev_day, "for page name")
        else:
            print("Data update required.")
        driver.close()


if __name__ == '__main__':
    unittest.main()

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018
new = datetime.datetime.strptime(date,'%m/%d/%Y')
data_date = new.strftime("%A")

Это даст вам название дня (например, пятница), затем вы можете сравнить, как вы делаете,

if data_date == "Friday":
        print("Data as on",data_date , "for page name")

И для сравнения предыдущих дней, вы должны сделать,

tdelta1 = datetime.timedelta(days=1) prev_day = (new - tdelta1).strftime("%A")

перед выполнением,

elif data_date == prev_day:
        print("Data as on", prev_day, "for page name")

Когда вы заменили пятницу на prev_day, вы получите ошибку, потому что интерпретатор python сначала находит эту переменную, котораяне определен.

0 голосов
/ 05 декабря 2018

Вы лучше напишите:

d = datetime.date.today()

if d.weekday() == 0:
    tdelta = datetime.timedelta(days=3)
    prev_day = None
    friday = d - tdelta
elif d.weekday() in range(1, 5):
    tdelta1 = datetime.timedelta(days=1)
    prev_day = d - tdelta1
    friday = None

И я предлагаю вам использовать Python IDE, они выделяют такие ошибки.

Также я считаю, что эти проверки могут быть выполнены с использованием календарь модуль

0 голосов
/ 05 декабря 2018

Это распространенный тип ошибки

позвольте мне разобрать вашу ошибку

if d.weekday() == 0:
    tdelta = datetime.timedelta(days=3)
    friday = d - tdelta


elif d.weekday() in range(1,5):
    tdelta1 = datetime.timedelta(days=1)
    prev_day = d - tdelta1

если мы выполним вашу программу

если d.weekday() == 0 содержит ложь

, тогда он перейдет к

elif d.weekday() in range(1,5):

, но ваш friday = d - tdelta находится в if состоянии.Вот почему он показывает ошибку

, чтобы решить, что вы должны определить friday за пределами if условия и переназначить значение в вашем if условии

, вы можете решить это следующим образом

friday = None
prev_day = None
d = datetime.date.today()

if d.weekday() == 0:
    tdelta = datetime.timedelta(days=3)
    friday = d - tdelta


elif d.weekday() in range(1,5):
    tdelta1 = datetime.timedelta(days=1)
    prev_day = d - tdelta1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...