簡體   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