Я только начал изучать Selenium с помощью Python на прошлой неделе, я пишу тестовый пример с 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()