[英]Read and Write multiple excel data into one excel file using openpyxl
[英]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.