大致介紹完 pytest 後,今天要把之前的發文自動化延伸,實作測試是否成功發文。
這次主要是測試有沒有發文成功,而 iThelp 的儲存草稿功能一樣會顯示在我的文章,只是以草稿的形式並沒有真的發出來,所以這次我們會把最後發文的步驟修改成點擊儲存草稿,並到我的發文檢查有沒有發文成功。
首先我們在發文的 page 增加新增操作對應的 locator
# 儲存草稿 self.save_draft = (By.XPATH, "//button[@class='btn btn-draft save-group__btn']")
# 個人帳號頭貼 self.account_icon = (By.XPATH, "//img[@class='img-circle menu__avatar-img']")
# 我的發文 self.my_article = (By.XPATH, "//a[text()='我的發文']")
然後在下面做出對應的操作
def post_article(self, subject, article):
self.input_text(self.subject, subject)
self.actions_input_text(self.article, article)
self.click_element(self.save_draft)
def go_to_my_article(self):
self.click_element(self.account_icon)
self.click_element(self.my_article)
在發文的部分把發文修改成儲存草稿,並新增前往我的文章的操作。
由於我的發文也算一種 page,所以我們會新增myarticle_page.py
檔,在裡面處理發文是否成功。
class MyArticlePage(BasePage):
def __init__(self, browser):
super().__init__(browser)
self.first_article_title = (By.XPATH, "(//div[@class='qa-list profile-list'])[1]/descendant::a[@class='qa-list__title-link']")
通常最新發布的文章或草稿都會在我的文章的最上面,所以我們可以找第一個文章的標題,檢查是否與預期的標題符合。
這邊我們會用到把元素內文字轉成text,所以 page_base 要新增相關邏輯:
def get_element_text(self, locator):
"""取得元素文字"""
element = self.find_element_visible(locator)
return element.text
然後利用 assert 驗證標題是否相同
def check_article_title(self, title):
article_title = self.get_element_text(self.first_article_title)
assert title == article_title
這樣就完成了,下次預計介紹報表相關內容。