编辑Selenium(python)导出的测试用例以从文本文件读取数据

编辑Selenium(python)导出的测试用例以从文本文件读取数据,python,unit-testing,selenium,automated-tests,web-testing,Python,Unit Testing,Selenium,Automated Tests,Web Testing,我已经导出了一个测试用例并保存为.py文件。我想编辑它以从文本文件读取数据,作为登录到我正在测试的网站的输入。应允许登录的示例用户名和密码分别为、1和pwd1。但是,当我通过使用readlines()访问第一行read从文件中读取这些值时,它在登录时显示失败,测试用例失败。当我打印readlines读取的对应行的大小时,它的大小比应该的大1。i、 e.size=2,而我的用户名的大小1,我假设应该是1。需要帮助才能使此测试用例成功。这是我的密码: # -*- coding: utf-8 -*-

我已经导出了一个测试用例并保存为.py文件。我想编辑它以从文本文件读取数据,作为登录到我正在测试的网站的输入。应允许登录的示例用户名和密码分别为、1和pwd1。但是,当我通过使用readlines()访问第一行read从文件中读取这些值时,它在登录时显示失败,测试用例失败。当我打印readlines读取的对应行的大小时,它的大小比应该的大1。i、 e.size=2,而我的用户名的大小1,我假设应该是1。需要帮助才能使此测试用例成功。这是我的密码:

 # -*- 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()
My cases.txt如下所示:

/source.jsp

一,

pwd1

(//输入[@value='Submit'])[2]

输入[类型=\“提交\”]

注销

/source.jsp

一,

pwd1

(//输入[@value='Submit'])[2]

输入[类型=\“提交\”]


注销

数据
可以看作是一个二维数组。尝试使用2个索引访问它,例如:

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])
以上假设您的id和密码的长度是固定的

但是,如果您不想像上面那样给出预定义的值,如3和5,请尝试使用length函数