• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SeleniumWebDriver Python plik CSV

Object Storage Arubacloud
+1 głos
238 wizyt
pytanie zadane 28 kwietnia 2016 w Python przez Bogusław Pinkiewicz Użytkownik (520 p.)

Mam takie zadanko. Zrealizować scenariusz testowy: loguję się jako admin, dodaję pracownika, eksportuję plik CSV z kontami pracowników i weryfikuję, czy plik ten nie jest pusty. Udaje mi się wyeksportować plik CSV, ale jak go teraz otworzyć i sprawdzić czy nie jest pusty? poniżej kod, ale boję, że bez środowiska przygotowanego nie pójdzie.

Podstawowe pytanie, na które szukam odpowiedzi, to jak w Pythonie wczytać plik CSV i zweryfikować, że nie jest pusty?

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException, NoAlertPresentException
import unittest
import os
import os.path


class Employee(unittest.TestCase):
    # Bazowy adres strony
    base_url = "http://localhost:9998/"

    # Scieżka dostępu do pliku po jego zapisaniu
    file_path = os.getcwd() + "\\accounts.csv"

    # Dane pracownika
    account_name = "icm-test"
    account_email = "icm-test@icm.com"
    account_password = "!1"

    def setUp(self):
        fp = webdriver.FirefoxProfile()
        # Należy skonfigurować profil przeglądarki, tak aby po kliknięciu
        # linka nie pojawiło się okno wyboru katalogu
        # https://developer.mozilla.org/en-US/docs/Download_Manager_preferences
        fp.set_preference("browser.download.folderList", 2)
        fp.set_preference("browser.download.manager.showWhenStarting", False)
        # Miejsce, gdzie pliki mają zostać zapisane
        fp.set_preference("browser.download.dir", os.getcwd())
        # Pliki o podanym typie będą automatycznie zapisywane na dysk
        fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/plain")

        self.driver = webdriver.Firefox(firefox_profile=fp)
        #self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(5)
        self.verificationErrors = []
        self.accept_next_alert = True

    def test_create_employee(self):
        """
            Główna metoda testowa. Nie wymaga modyfikacji
        """
        driver = self.driver
        driver.get(self.base_url)
        self.login()
        self.createEmployee()

        # Cwiczenie zaawansowane - odkomentuj i zaimplementuj brakujace metody
        #self.exportAccounts()
        self.verifyAccountCreated()

    def login(self):
        print("Logowanie przez administratora")
        driver = self.driver
        driver.find_element_by_xpath("//a[@href = '/signin']").click()
        driver.find_element_by_id("inputEmail").send_keys("icm-admin@icm.com")
        driver.find_element_by_id("inputPassword").send_keys("!1")
        driver.find_element_by_id("signin").click()
        self.assertTrue(self.is_element_present(By.XPATH, "//table[@id='incidents']"))
        driver.find_element_by_xpath("//a[contains(.,'Logout')]").click()

        # TODO Zaimplementuj logowanie administratora

    def createEmployee(self):
        print("Dodanie pracownika")
        driver = self.driver
        driver.implicitly_wait(30)
        driver.find_element_by_xpath("//a[@href = '/signin']").click()
        driver.find_element_by_id("inputEmail").send_keys("icm-admin@icm.com")
        driver.find_element_by_id("inputPassword").send_keys("!1")
        driver.find_element_by_id("signin").click()
        self.assertTrue(self.is_element_present(By.XPATH, "//table[@id='incidents']"))
        driver.find_element_by_xpath("//a[@href = '/account/list']").click()
        self.assertTrue(self.is_element_present(By.XPATH, "//table[@id='accounts']"))
        driver.find_element_by_xpath("//a[@href = '/account/create']").click()
        driver.find_element_by_id("email").send_keys("icm-test@icm.com")
        driver.find_element_by_id("name").send_keys("icm-test")
        driver.find_element_by_id("phone").send_keys("123456")
        driver.find_element_by_id("password").send_keys("!1")
        driver.find_element_by_id("confirmedPassword").send_keys("!1")
        driver.find_element_by_xpath("//button[@id='create']").click()
        self.assertTrue(self.is_element_present(By.XPATH, "//span[@id='alert']"))
        #driver.find_element_by_xpath("//a[contains(.,'Logout')]").click()


        # TODO Zaimplementuj dodanie pracownika

    def exportAccounts(self):
        print("Eksport kont użytkowników")
        driver = self.driver
        driver.find_element_by_xpath("//a[@href='/dashboard']").click()
        driver.find_element_by_xpath("//a[@href='/export/accounts']").click()
        #driver.get('http://localhost:9998/setup?action=do')
        # TODO Pobierz plik CSV z kontami użytkowników

    def verifyAccountCreated(self):
        print("Werfyikacja danych w pliku " + self.file_path)
        self.driver.implicitly_wait(30)
        self.assertTrue(os.path.exists(self.file_path), msg='Plik ' + self.file_path + ' nie istnieje!')

        # TODO
        # Zwerfikuj czy w pliku znajdują się dane dodanego użytkownika
        # W przypadku braku danych test powinien nie wykonać się.

        # Użyj wbudowanej funkcji open() i zweryfikuj czy plik zawiera tekst (1 linia kodu)
        # Jeżeli nie zawiera, test powinien się nie wykonać

        #self.verifyTextPresent(open('accounts.csv'), '.True')
        if True:
            self.open()
            #self.fail("No content found in file!")

    def open(self):
        self.driver.get(self.file_path)


    def is_element_present(self, how, what):
        try:
            self.driver.find_element(by=how, value=what)
        except NoSuchElementException:
            return False
        return True

    def tearDown(self):
        self.driver.get('http://localhost:9998/setup?action=do')
        #self.driver.quit()
        self.assertEqual([], self.verificationErrors)


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

 

1 odpowiedź

+2 głosów
odpowiedź 28 kwietnia 2016 przez Surykat Stary wyjadacz (14,780 p.)
wybrane 29 kwietnia 2016 przez Bogusław Pinkiewicz
 
Najlepsza

A to nie wystarczy zrobić tak:

text = open('nazwa_pliku').read()

I sprawdzić, czy długość "text" jest większa od zera? :)

komentarz 28 kwietnia 2016 przez Bogusław Pinkiewicz Użytkownik (520 p.)
edycja 29 kwietnia 2016 przez Bogusław Pinkiewicz
Edycja komentarza

A jednak pomogło, dziękuję.

Podobne pytania

0 głosów
2 odpowiedzi 98 wizyt
pytanie zadane 6 marca w Python przez Fidzi Nowicjusz (120 p.)
0 głosów
1 odpowiedź 114 wizyt
pytanie zadane 18 lipca 2023 w Python przez FrikeQ Nowicjusz (170 p.)
0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 16 października 2022 w Python przez Mocaz Użytkownik (560 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...