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
Oh. Ich habe das gerade ausprobiert. Es funktioniert. Vielen Dank. –