def test_buycar_brand_img(self): """测试我要买车默认品牌的图片请求是否正常""" self.driver.get(home_url) brand_li = self.driver.find_element(HomePageLocator.BUY_CAR_BRAND) brand_links = brand_li.find_elements_by_tag_name('a') # 获取所有品牌名称和图片地址 brand_set = {} for brand_link in brand_links: brand = brand_link.text if brand != '查看全部': img = brand_link.find_element_by_tag_name('img').get_attribute( 'src') brand_set[brand] = img # 循环所有图片地址,判断请求状态码是否为200 result = [] for brand, src in brand_set.items(): try: img_status_code = requests.get(src).status_code tt_check.assertEqual( 200, img_status_code, "品牌%s的图片请求状态,期望是200,实际是%s" % (brand, img_status_code)) except AssertionError as msg: result.append(msg) if result: raise AssertionError(result)
def test_sellcar_title(self): """测试我要卖车区域Title显示的是否正确@author:zhangyanli""" self.driver.get(sellcar_url) sellcar_title = self.driver.find_element( SellCar_Locator.SELL_CAR_TITLE).text tt_check.assertEqual("卖车", sellcar_title, "我要卖车区域的title,期望是卖车,实际是%s" % sellcar_title)
def test_ad_displayed(self): """测试广告位图片请求是否正常""" self.driver.get(home_url) ads = self.driver.find_elements(HomePageLocator.FOCUS_PIC_IMG) ad_srcs = [] for ad in ads: ad_src = ad.get_attribute('src') ad_srcs.append(ad_src) if not ad_srcs: raise Exception("未找到轮播广告图元素") # 遍历所有焦点图的src,查看访问是否正常 result = [] for ad_src in ad_srcs: try: ad_url_status = requests.get(ad_src).status_code tt_check.assertEqual(200, ad_url_status, "焦点图广告请求状态码,期望是200,实际是%d" % ad_url_status) except AssertionError as msg: result.append(msg) if result: raise AssertionError(result)
def test_pinggu_title(self): """测试评估区域Title显示的是否正确@author:zhangyanli""" self.driver.get(pinggu_url) pinggu_title = self.driver.find_element( PingGu_Locator.PINGGU_TITLE).text tt_check.assertEqual("估价", pinggu_title, "评估区域的title,期望是估价,实际是%s" % pinggu_title)
def test_buycar_price_jump(self): """测试我要买车价格筛选跳转是否正确""" self.driver.get(home_url) price_li = self.driver.find_element(HomePageLocator.BUY_CAR_PRICE) price_links = price_li.find_elements_by_tag_name('a') # 遍历所有价格范围 result = [] for price_link in price_links: try: price = price_link.text price_range = re.findall(r'\d+', price) price_link.click() # 在新窗口判断筛选条件是否为选择的价格范围 self.driver.switch_to_window() self.driver.wait() filter_content = self.driver.find_element(BuyCarLocator.FILTER_SELETED) \ .find_element_by_tag_name('a').text filter_price_range = re.findall(r'\d+', filter_content) tt_check.assertEqual( price_range, filter_price_range, "所选价格范围%s,跳转后已选择的筛选条件是%s" % (price, filter_content)) except AssertionError as msg: result.append(msg) finally: # 重置driver self.driver.switch_to_window() self.driver.close_other_window() if result: raise AssertionError(result)
def test_CarPrice(self): """测试首页价格糖豆,@author:xulanzhong""" price_expect = ['5万以下', '5-10万', '10-15万', '15万以上'] self.driver.get(url) self.driver.execute_script("window.scrollTo(0, 300)") self.driver.pause(3) carprice_li = self.driver.find_element(Locator_Home.carprive_list) carprice_links = carprice_li.find_elements_by_tag_name('a') price_actual = [] for carprice_link in carprice_links: price_actual.append(carprice_link.text) tt_check.assertEqual(sorted(price_actual), sorted(price_expect), "首页价格糖豆,期望价格是%s,实际是%s" % (price_expect, price_actual)) self.driver.click(Locator_Home.carprive_click) test_price = self.driver.is_display(Locator_Home.carprive_foot) tt_check.assertTrue(test_price,"列表页筛选条件0-5万,是否显示 %s" % test_price)
def test_M_detail(self): """遍历M详情页链接并验证状态码,@author:xulanzhong""" self.driver.get(buycar_url) self.driver.find_element(locator_m.Locator_Home.car_img).click() pagesource = self.driver.get_url() print('当前页面的url是:', pagesource) #self.driver.max_window() # 匹配出所有a元素里的链接 urls = self.driver.find_elements(locator_m.Locator_Home.xpath_all) print("当前页面的可用链接如下:") for url in urls: u = url.get_attribute('href') if u == 'None': # 排除没有链接的元素 continue try: r = requests.get(u) status = r.status_code tt_check.assertEqual(status, 200, "请求是否成功:状态码%s" % status) except: # 把测试不通过的url显示出来 print('Error url : ' + str(u) + ':++++++++不是正确链接+++++++') # 把测试不通过的url显示出来 else: # 测试通过的url展示出来 print(u)
def test_pc_detail(self): """测试列表页爬取链接并验证状态码,@author:xulanzhong""" self.driver.get(buycar_url) self.driver.max_window() self.driver.find_element(locator.HeaderLocator.first_car).click() self.driver.switch_to_window() pagesource = self.driver.get_url() print('当前页面的url是:', pagesource) urls = self.driver.find_elements( locator.HeaderLocator.xpath_all) # 匹配出所有a元素里的链接 print("当前页面的可用链接如下:") for url in urls: u = url.get_attribute('href') if u == 'None': # 很多的a元素没有链接,所有是None continue try: r = requests.get(u) status = r.status_code tt_check.assertEqual(status, 200, "请求是否成功:状态码%s" % status) except: print('Error url : ' + str(u) + ':++++++++不是正确链接+++++++') # 把测试不通过的url显示出来 else: print(u) # 测试通过的url展示出来
def test_getbaozhencar(): """测试保真车获取接口@author:zhaoliuming""" api_tested = default_url + "/ajax/jsonp/getbaozhencar.ashx?cid=201&tid=1&callback=jQuery112402816550473892061_1564803591809" response = requests.get(api_tested) LOG.info("【访问】" + api_tested) status = response.status_code tt_check.assertEqual(status, 200, "请求是否成功:状态码%s" % status) tt_check.assertRegex(response.text, "成功", "返回是否包含成功")
def test_nav_selected(self): """测试访问资讯站点时导航中资讯是否高亮""" # 打开资讯站点 self.driver.get(url) status_actual = self.driver.find_element( NewsLocator.NAV_NEWS).get_attribute('class') tt_check.assertEqual(status_actual, 'current', "导航中资讯是否高亮显示")
def test_buycar_title(self): """测试我要买车区域我要买车title显示是否正确""" self.driver.get(home_url) buycar_title = self.driver.find_element( HomePageLocator.BUY_CAR_TITLE).text tt_check.assertEqual("我要买车", buycar_title, "我要买车区域的title,期望是我要买车,实际是%s" % buycar_title)
def test_sellcar_title(self): """测试我要卖车区域Title显示的是否正确""" self.driver.get(home_url) sellcar_title = self.driver.find_element( HomePageLocator.SELL_CAR_TITLE).text tt_check.assertEqual("我要卖车", sellcar_title, "我要卖车区域的title,期望是我要卖车,实际是%s" % sellcar_title)
def test_tchome(self): """测试顶通淘车首页链接跳转的正确性""" self.driver.get(url) self.driver.click(HeaderLocator.TC_HOME) url1 = self.driver.get_url() url2 = "https://www.taoche.com/" tt_check.assertEqual(url1, url2, "测试顶通淘车首页的链接跳转, 期望是%s,实际是%s" % (url2, url1))
def test_Ibuycar(self): """测试首页我要买车跳转,@author:xulanzhong""" self.driver.get(url) self.driver.max_window() self.driver.find_element(locator.HeaderLocator.Ibuycar).click() self.driver.pause(3) actual_bjbc = self.driver.find_element(locator.HeaderLocator.BJbuycar).text expect_bjbc = '北京二手车' tt_check.assertEqual(expect_bjbc, actual_bjbc,"二手车列表面包屑,期望是%s,实际是%s" % (expect_bjbc, actual_bjbc))
def test_buycar_jump(self): """测试我要买车title跳转""" self.driver.get(home_url) self.driver.click(HomePageLocator.BUY_CAR_TITLE) nav_buycar_class = self.driver.find_element( HeaderLocator.NAV_BUYCAR).get_attribute('class') tt_check.assertEqual('current', nav_buycar_class, "测试点击我要买车,跳转后的页面导航买车是否为选中状态")
def test_sellcar_submit(self): """测试我要卖车区域title跳转""" self.driver.get(home_url) self.driver.click(HomePageLocator.SELL_CAR_SUBMIT) nav_sellcar_class = self.driver.find_element( HeaderLocator.NAV_SELLCAR).get_attribute('class') tt_check.assertEqual('current', nav_sellcar_class, "测试点击我要卖车按钮,跳转后的页面导航卖车是否为选中状态")
def test_car_find(self): """测试首页底部找二手车-跳转,@author:xulanzhong""" self.driver.get(url) self.driver.max_window() car_li = self.driver.find_element( locator.HeaderLocator.find_car).get_attribute('href') r = requests.get(car_li) status = r.status_code tt_check.assertEqual(status, 200, "请求是否成功:状态码%s" % status)
def test_hot_city(self): """测试首页底部热门城市-跳转,@author:xulanzhong""" self.driver.get(url) self.driver.max_window() shanghai_li = self.driver.find_element( locator.HeaderLocator.hot_shanghai).get_attribute('href') r = requests.get(shanghai_li) status = r.status_code tt_check.assertEqual(status, 200, "请求是否成功:状态码%s" % status)
def test_sellcar_pinggu_nophone(self): """测试我要卖车区域不输入电话号码时免费评估submit跳转""" self.driver.get(home_url) self.driver.click(HomePageLocator.SELL_CAR_PINGU) url_actual = self.driver.get_url() url_expected = config.pinggu_url tt_check.assertEqual(url_actual, url_expected, "测试点击免费评估按钮,跳转后的页面是否为评估url")
def test_B_TV(self): """测试首页底部广播电视许可证-跳转,@author:xulanzhong""" self.driver.get(url) self.driver.max_window() TV_li = self.driver.find_element( locator.HeaderLocator.TV_url).get_attribute('href') # 获取广播电视许可证的请求状态 r = requests.get(TV_li) status = r.status_code tt_check.assertEqual(status, 200, "请求是否成功:状态码%s" % status)
def test_title(self): """测试首页Title显示是否正确""" self.driver.get(home_url) home_page_title_actual = self.driver.get_title() home_page_title_expected = "二手车市场_二手车交易市场_二手车平台-淘车网" tt_check.assertEqual( home_page_title_actual, home_page_title_expected, "页面title期望是%s,实际是%s" % (home_page_title_expected, home_page_title_actual))
def test_car_price(self): """测试首页我要买车-价格跳转,@author:xulanzhong""" self.driver.get(url) self.driver.max_window() self.driver.find_element(locator.HeaderLocator.Car_price).click() self.driver.pause(3) self.driver.switch_to_window() actual_price_path = self.driver.find_element(locator.HeaderLocator.Price_path).title expect_price_path = '8-10万' tt_check.assertEqual(expect_price_path, actual_price_path,"二手车列表面包屑,期望是%s,实际是%s" % (expect_price_path, actual_price_path))
def test_B_lisence(self): """测试首页底部营业执照-跳转,@author:xulanzhong""" self.driver.get(url) self.driver.max_window() B_li = self.driver.find_element( locator.HeaderLocator.license_url).get_attribute('href') # 获取营业执照的请求状态 r = requests.get(B_li) status = r.status_code print(status) tt_check.assertEqual(status, 200, "请求是否成功:状态码%s" % status)
def test_car_level(self): """测试首页我要买车-级别跳转,@author:xulanzhong""" self.driver.get(url) self.driver.max_window() self.driver.find_element(locator.HeaderLocator.Car_level).click() self.driver.pause(3) self.driver.switch_to_window() actual_level_path = self.driver.find_element(locator.HeaderLocator.Level_path).text expect_level_path = '小型车' tt_check.assertEqual(expect_level_path, actual_level_path, "二手车列表面包屑,期望是%s,实际是%s" % (expect_level_path, actual_level_path))
def test_sellcar_pinggu_phone(self): """测试我要卖车区域输入电话号码时免费评估submit跳转""" self.driver.get(home_url) phone = '13000000000' self.driver.send_keys(HomePageLocator.SELL_CAR_PHONE, phone) self.driver.click(HomePageLocator.SELL_CAR_PINGU) url_actual = self.driver.get_url() url_expected = config.pinggu_url + '?phone=' + phone tt_check.assertEqual(url_actual, url_expected, "测试输入手机号点击免费评估按钮,跳转后的页面地址是否包含手机号")
def test_nav_default(self): """测试首页导航默认是否是首页""" self.driver.get(url) navigation_default = self.driver.find_element( HeaderLocator.NAV_DEFAULT) navigation_default_expected = "首页" navigation_default_actual = navigation_default.text tt_check.assertEqual( navigation_default_actual, navigation_default_expected, "导航默认,期望为%s,实际为%s" % (navigation_default_expected, navigation_default_actual))
def test_buycar_level_jump(self): """测试我要买车级别筛选跳转是否正确""" self.driver.get(home_url) level_li = self.driver.find_element(HomePageLocator.BUY_CAR_LEVEL) level_links = level_li.find_elements_by_tag_name('a') # 遍历所有级别 result = [] for level_link in level_links: try: level = level_link.text level_link.click() # 在新窗口判断筛选条件是否选中了点击的级别 self.driver.switch_to_window() self.driver.wait() # 遍历已选择的筛选条件 filters = [] filter_elements = self.driver.find_element(BuyCarLocator.FILTER_SELETED) \ .find_elements_by_tag_name('a') for filter_element in filter_elements: filter_name = filter_element.get_attribute('title') if filter_name: filters.append(filter_name) if level == "准新车": level_expected = ["2年内", "1万公里内"] elif level == "练手车": level_expected = ["3-5万"] elif level == "SUV": level_expected = ["小型SUV+紧凑型SUV+中型SUV+中大型SUV+大型SUV"] else: level_expected = level.split() tt_check.assertEqual( level_expected, filters, "所选级别是%s,跳转后已选择的筛选条件是%s" % (level, filters)) except AssertionError as msg: result.append(msg) finally: # 重置driver self.driver.switch_to_window() self.driver.close_other_window() if result: raise AssertionError(result)
def search_car(self): """买车列表页搜索功能@author:fangyu""" self.driver.get(bugcar_url) self.driver.find_element( BuyCarLocator.SEARCH_KEY_WORD).send_keys(brand_name) self.driver.find_element(BuyCarLocator.SEARCH_ACTION).click() title = self.driver.find_element( BuyCarLocator.SEARCH_RESULT).get_attribute('title') time.sleep(1) tt_check.assertEqual( title, brand_name, '搜索车:{brand_name},检索结果:{title}'.format(brand_name=brand_name, title=title))
def test_floor(self): """测试首页楼层显示是否正确""" floors_expected = ["全国购", "淘车推荐", "品牌认证车", "淘车新车", "资讯"] floors_actual = [] self.driver.get(home_url) floors_spans = self.driver.find_elements(HomePageLocator.FLOORS) for floor in floors_spans: # 排除不确定的楼层 if floor.text != '商家急售车': floors_actual.append(floor.text) tt_check.assertEqual(floors_actual, floors_expected, "首页楼层期望是%s,实际是%s" % (floors_expected, floors_actual))
def test_nav_menu(self): """测试首页导航显示是否正确""" navigation_expected = ["首页", "买车", "卖车", "分期", "资讯", "保险", "新车"] navigation_actual = [] self.driver.get(url) navigation_bar = self.driver.find_element(HeaderLocator.NAV_MENU) navigation_links = navigation_bar.find_elements_by_tag_name('a') for navigation in navigation_links: navigation_actual.append(navigation.text) tt_check.assertEqual( navigation_actual, navigation_expected, "导航期望是%s,实际是%s" % (navigation_expected, navigation_actual))