繁体   English   中英

Python Selenium使用openpyxl将结果写入excel文件,但是只有大小写写入excel文件

[英]Python selenium using openpyxl to write result to excel file but there is only case is written to excel file

我上周刚开始使用Python学习Selenium,我编写了一个包含4个步骤的测试用例,在第3和第4步,如果通过/失败,那么它将结果写入excel文件。 但是当我运行测试用例时,只有一步可以将结果写入excel文件,有帮助吗? 顺便说一句,对不起,我的英语不好:P

我的情况
步骤1:输入使用者名称
步骤2:输入密码
步骤3:按一下[登入]按钮
步骤4:等待Gmail徽标可见

这是我的代码:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import unittest
from openpyxl import Workbook

class BasicTest(unittest.TestCase):

def setUp(self):
    self.driver = webdriver.Firefox()
    self.driver.get("https://www.gmail.com")
    self.LoginXpath = "//input[@value='Sign in']"
    self.LogoXpath = "//a[contains(@href, '#inbox')]"
    self.gmailUserName = "username"
    self.gmailPassword = "password"
    self.emailFieldID = "Email"
    self.passFieldID = "Passwd"
    self.InboxXpath = "id(':4b')/x:div/x:div[1]/x:span/x:a"

def test_Basic(self):
    driver = self.driver
    driver.find_element_by_id(self.emailFieldID).send_keys(self.gmailUserName)
    driver.find_element_by_id(self.passFieldID).send_keys(self.gmailPassword)


    try:
        driver.find_element_by_xpath(self.LoginXpath).click()
        self.write_test_case_result('PASS', 'A1')
        print('Find login button: PASS')
    except:
        self.write_test_case_result('FAIL', 'A1')
        print('Find login button: FAIL')

    try:
        WebDriverWait(driver, 15).until(lambda driver: self.InboxXpath)
        driver.find_element_by_xpath(self.LogoXpath).click()
        self.write_test_case_result('PASS', 'A2')
        print('Find logo xpath: PASS')
    except:
        self.write_test_case_result('FAIL', 'A2')
        print('Find logo xpath: FAIL')

def write_test_case_result(self, result, location):
    wb = Workbook()
    ws1 = wb.worksheets[0]
    ws1.title = 'Test result'
    dest_filename = 'Test_Result.xlsx'

    while True:
        if result == "PASS":
            ws1.cell(location).value = "PASSED"
            break
        else:
            ws1.cell(location).value = "FAILED"
            break
        break
    # Save the file
    wb.save(filename = dest_filename)


def tearDown(self):
    self.driver.quit()

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

首先,使用以下命令安装openpyxl:“ pip install openpyxl”,然后创建一个新的文件python文件并编写以下代码-

from openpyxl import load_workbook

def userName(row_Num, cell_Num, sheet):
    wb = load_workbook('./test.xlsx')
    sheet = wb.get_sheet_by_name(sheet)
    username = sheet.cell(row=row_Num, column=cell_Num).value
    if username is not None:
        return username
    else:
        return '' #Null Value pass 

现在转到创建testScript的位置并导入python文件,请记住所有文件应为同一文件夹,包括excellSheet。

 driver.find_element_by_xpath("//input[@id='user']").send_keys(userName(7,1,'Sheet1'))
 #Row num, Col Num, Sheet Name

格式已关闭,但我认为您不应该将实质上是日志记录的代码嵌入测试方法中。 test_Basic每次运行时都会覆盖该文件,这大概就是为什么它只有一个结果的原因。

最初尝试编写测试只是为了使用Python的日志记录模块。 一旦工作正常,就可以用一些写入Excel文件的代码替换日志记录对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM