2016-04-02 12 views
0

Ich habe einen Testfall exportiert und als .py-Datei gespeichert. Ich möchte es bearbeiten, um Daten aus einer Textdatei als Eingaben für die Anmeldung auf der Website zu lesen, die ich gerade teste. Der Beispielbenutzername und das Passwort, die eine Anmeldung zulassen sollten, sind jeweils 1 und pwd1. Aber wenn ich diese Werte aus einer Datei lese, indem ich auf die erste gelesene Zeile mit readlines() zugreife, zeigt es einen Fehler beim Einloggen an und der Testfall schlägt fehl. Wenn ich die Größe der entsprechenden Zeile, gelesen von Readlines, ausgedruckt habe, ist die Größe 1 mehr als es sein sollte. d. h. Größe = 2, während die Größe meines Benutzernamens, 1, 1 sein sollte, nehme ich an. Brauche Hilfe, um diesen Testfall erfolgreich zu machen. Hier ist mein Code:Bearbeiten Selenium (Python) exportiert Testfall, um Daten aus einer Textdatei zu lesen

# -*- 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 
from selenium.common.exceptions import NoAlertPresentException 
import unittest, time, re 
import time 

class A6Test2(unittest.TestCase): 
    def setUp(self): 
     self.driver = webdriver.Firefox() 
     self.driver.implicitly_wait(30) 
     self.base_url = "http://localhost:8080" 
     self.verificationErrors = [] 
     self.accept_next_alert = True 

    def test_a6_test2(self): 
     fh = open("cases.txt", "r") 
     data=fh.readlines() 
     uname1=data[1] 
     pwd1=data[2] 
     driver = self.driver 
     driver.get(self.base_url + data[0]) 
     driver.find_element_by_name("p_id").clear() 
     driver.find_element_by_name("p_id").send_keys(data[1]) 
     driver.find_element_by_name("p_passw").clear() 
     driver.find_element_by_name("p_passw").send_keys(data[2]) 
     time.sleep(5) 
     driver.find_element_by_xpath("(//input[@value='Submit'])[2]").click() 
     time.sleep(3) 
     driver.find_element_by_css_selector("input[type=\"SUBMIT\"]").click() 
     driver.find_element_by_link_text(data[5]).click() 
     driver.get(self.base_url + data[6]) 
     time.sleep(3) 
     driver.find_element_by_name("p_id").clear() 
     driver.find_element_by_name("p_id").send_keys(data[7]) 
     time.sleep(3) 
     driver.find_element_by_name("p_passw").clear() 
     driver.find_element_by_name("p_passw").send_keys(data[8]) 
     time.sleep(3) 
     driver.find_element_by_xpath("(//input[@value='Submit'])[2]").click() 
     time.sleep(3) 
     driver.find_element_by_css_selector("input[type=\"SUBMIT\"]").click() 
     driver.find_element_by_link_text(data[11]).click() 

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

    def is_alert_present(self): 
     try: self.driver.switch_to_alert() 
     except NoAlertPresentException as e: return False 
     return True 

    def close_alert_and_get_its_text(self): 
     try: 
      alert = self.driver.switch_to_alert() 
      alert_text = alert.text 
      if self.accept_next_alert: 
       alert.accept() 
      else: 
       alert.dismiss() 
      return alert_text 
     finally: self.accept_next_alert = True 

    def tearDown(self): 
     self.driver.quit() 
     self.assertEqual([], self.verificationErrors) 

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

Mein cases.txt ist wie folgt:

/source.jsp

pwd1

(// input [@ value = 'Senden']) [2]

Eingang [type = \ "SUBMIT \"]

Logout

/source.jsp

pwd1

(// Eingang [@ value = 'Senden']) [2]

input [type = "SUBMIT"]

Abmelden

Antwort

0

data kann als 2D-Array gesehen werden. Versuchen Sie, mit 2 Indizes darauf zuzugreifen. Beispiel:

driver.get(self.base_url + "/source.jsp") 
driver.find_element_by_name("d_id").clear() 
driver.find_element_by_name("d_id").send_keys(data[0][0:3]) 
driver.find_element_by_name("d_passw").clear() 
driver.find_element_by_name("d_passw").send_keys(data[1][0:5]) 

Das obige Verfahren geht von einer festen Länge Ihrer ID und Ihres Passworts aus.

Wenn Sie jedoch keine vordefinierten Werte wie 3 und 5 wie oben angegeben angeben möchten, verwenden Sie die Längenfunktion.

+0

Oh. Ich habe das gerade ausprobiert. Es funktioniert. Vielen Dank. –