Python安装Pyenv
https://github.com/pyenv/pyenv-installer
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
Python Client
https://github.com/appium/python-client
Python测试框架PyTest
https://docs.pytest.org/en/latest/
添加依赖
- pytest
- pytest-html
- PyHarmcrest
参考代码
loginpage.py
from selenium.webdriver.common.by import By
import pages
from pages.basepage import BasePage
class LoginPage(BasePage):
profile_login_tv=(By.ID, "tv_login")
login_login_tv_phone = (By.XPATH, "//*[@text='手机及其他登录']")
login_login_tv_phone_pasword = (By.XPATH, "//*[@text='邮箱手机号密码登录']")
phone_edit=(By.ID, "login_account")
password_edit=(By.ID, "login_password")
button_next=(By.ID, "button_next")
def login(self, username, password):
from pages.mainpage import MainPage
self.driver.find_element(*self.profile_login_tv).click()
self.driver.find_element(*self.login_login_tv_phone).click()
self.driver.find_element(*self.login_login_tv_phone_pasword).click()
self.driver.find_element(*self.phone_edit).send_keys(username)
self.driver.find_element(*self.password_edit).send_keys(password)
self.driver.find_element(*self.button_next).click()
return MainPage(self.driver)
mainpage.py
from selenium.webdriver.common.by import By
from pages.basepage import BasePage
from pages.loginpage import LoginPage
from pages.searchpage import SearchPage
import pages.loginpage
class MainPage(BasePage):
search_text=(By.ID, "tv_search")
cancel_button=(By.ID, "cancel")
profile_icon=(By.ID, "user_profile_icon")
def enter_search(self):
self.driver.find_element(*self.cancel_button).click()
self.driver.find_element(*self.search_text).click()
return SearchPage(self.driver)
def enter_login(self):
self.driver.find_element(*self.cancel_button).click()
self.driver.find_element(*self.profile_icon).click()
return LoginPage(self.driver)
searchpage.py
from selenium.webdriver.common.by import By
from pages.basepage import BasePage
class SearchPage(BasePage):
search_edit=(By.ID, "search_input_text")
stock_name_first=(By.ID, "stockName")
def search(self, key):
self.driver.find_element(*self.search_edit).send_keys(key)
def get_name_by_first_stock(self):
return self.driver.find_element(*self.stock_name_first).text
test_login.py
import pytest
import unittest
from pages.mainpage import MainPage
from util.appium import setup_appium
class login(unittest.TestCase):
def test_login_by_right(self):
driver = setup_appium()
main = MainPage(driver)
login_page=main.enter_login()
login_page.login("15600534760", "xueqiu12345678")
test_main.py
from appium import webdriver
from time import sleep
import unittest
import pytest
from pages.mainpage import MainPage
from util.appium import setup_appium
@pytest.mark.parametrize("key, name", [
("PDD", "拼多多"),
("pingan", "平安银行"),
("xiaomi", "小米集团")
])
def test_search(key, name):
driver = setup_appium()
main=MainPage(driver)
search_page=main.enter_search()
search_page.search(key)
assert search_page.get_name_by_first_stock()==name