def test_activity(self): logger.info("开始执行书详页促销活动脚本...") pc = ParseConfigFile() try: # books_data=getDataList('双周特价') # books_data=getDataList('本周特价') # # bookid=str(books_data[0]['ebook_id']) testBookDetailNotNeedLogin.browser.get(pc.getUrl('bookcity')) book_city_page=BookCityPage(testBookDetailNotNeedLogin.browser) book_city_page.discountButton().click() time.sleep(1) discount_page=WeeklyDiscountPage(testBookDetailNotNeedLogin.browser) discount_page.firstBook().click() time.sleep(1) bookid=re.search(r'[0-9]{8}', testBookDetailNotNeedLogin.browser.current_url).group() testBookDetailNotNeedLogin.browser.get(pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书籍详情"页面...') bookDetailPage = BookDetailPage(testBookDetailNotNeedLogin.browser) activity_obj = bookDetailPage.acivityObj() activity_text = activity_obj.text.strip(string.whitespace) api_activity=BookDetai.getData(bookid)['promotion_msg'] try: self.assertIs(activity_text==api_activity, True) logger.info('书详页促销活动脚本执行成功!用例通过') except AssertionError as e: logger.debug('书详页促销活动脚本执行失败!用例通过') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e
def test_price_no_discount_book(self): logger.info("开始执行书详页非折扣书价格脚本...") #获取是否执行列 isExecuteUser=testBookDetailNotNeedLogin.excelObj.get_col_values(book_isExecute, sheet_name='价格逻辑验证书籍') pc = ParseConfigFile() for idx,i in enumerate(isExecuteUser[1:]): start_time=time.time() bookType=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_type) if 'Y'==i and "没折扣"==bookType: bookid=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_id) bookname=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_name) logger.info("执行测试数据:%s,%s"%(bookid,bookname)) try: testBookDetailNotNeedLogin.browser.get(pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书籍详情"页面...') bookDetailPage = BookDetailPage(testBookDetailNotNeedLogin.browser) realprice_obj=bookDetailPage.realPriceObj() # realprice=realprice_obj.text.strip('阅豆') realprice=str(int(round(float(realprice_obj.text.strip('¥'))*100))) api_realprice=str(BookDetai.getData(bookid)['jd_price']) try: self.assertIs(realprice_obj.is_displayed() and api_realprice==realprice,True) logger.info('书详页非折扣书籍脚本执行成功!用例通过') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_testResult, 'success', 'green') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_time, str(round((time.time() - start_time) / 1000, 2)) + 's') except AssertionError as e: logger.debug('书详页非折扣书籍价格脚本执行失败!用例通过') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_testResult, 'fail', 'red') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_time, str(time.time() - start_time) + 'ms', 'red') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e else: continue
def test_price_sell_out_book(self): logger.info("开始执行书详页下柜书价格脚本...") #获取是否执行列 isExecuteUser=testBookDetailNotNeedLogin.excelObj.get_col_values(book_isExecute, sheet_name='价格逻辑验证书籍') pc = ParseConfigFile() for idx,i in enumerate(isExecuteUser[1:]): start_time=time.time() bookType=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_type) if 'Y'==i and "下柜"==bookType: bookid=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_id) bookname=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_name) logger.info("执行测试数据:%s,%s"%(bookid,bookname)) try: testBookDetailNotNeedLogin.browser.get(pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书籍详情"页面...') bookDetailPage = BookDetailPage(testBookDetailNotNeedLogin.browser) price=bookDetailPage.priceObj() try: self.assertIs(price.is_displayed() and "此书已下柜"==price.text,True) logger.info('书详页下柜书价格脚本执行成功!用例通过') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_testResult, 'success', 'green') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_time, str(round((time.time() - start_time) / 1000, 2)) + 's') except AssertionError as e: logger.debug('书详页下柜书书价格脚本执行失败!用例不通过') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_testResult, 'fail', 'red') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_time, str(time.time() - start_time) + 'ms', 'red') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e else: continue
def test_recomment_books(self): logger.info("开始执行书详页相关书籍推荐脚本...") pc = ParseConfigFile() try: testBookDetailNotNeedLogin.browser.get(pc.getUrl('bookdetail') % ('30331055')) logger.info('启动浏览器,访问"书籍详情"页面...') bookDetailPage = BookDetailPage(testBookDetailNotNeedLogin.browser) page_recommand_books=[ item for item in bookDetailPage.allRecommandBooksObj()] try: for i in page_recommand_books: self.assertIs(i.is_displayed(), True) logger.info('书详页相关图书推荐脚本执行成功!用例通过') except AssertionError as e: logger.debug('书详页相关图书推荐脚本执行失败!用例通过') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e
def test_Add_Book_and_Delete_Book(self): #获取是否执行列 isExecuteUser = TesShoppingCart.excelObj.get_col_values( book_isExecute, sheet_name='购买书籍') pc = ParseConfigFile() for idx, i in enumerate(isExecuteUser[1:]): start_time = time.time() if i == 'Y': bookid = TesShoppingCart.excelObj.get_cell_value( idx + 2, book_id) bookname = TesShoppingCart.excelObj.get_cell_value( idx + 2, book_name) logger.info("执行测试数据:%s,%s" % (bookid, bookname)) # 通过接口api拿到我的书籍列表中的书 my_books_data = MyBooks.getData( TesShoppingCart.excelObj.get_cell_value( idx + 2, buyer_pin)) # 判断buyer是否已经拥有该书: have_flag = bookid in my_books_data if have_flag: TesShoppingCart.excelObj.write_cell_value( idx + 2, book_isExecute, 'N') else: try: TesShoppingCart.browser.get( pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书详页"页面...') book_detail_page = BookDetailPage( TesShoppingCart.browser) add_shopping_cart_button = book_detail_page.shopCartButton( ) TesShoppingCart.browser.execute_script( "arguments[0].scrollIntoView();", add_shopping_cart_button) add_shopping_cart_button.click() time.sleep(2) add_shopping_cart_button.click() shopping_cart_page = ShoppingCartPage( TesShoppingCart.browser) try: first_book_in_shopping_cart = shopping_cart_page.shoppingCartBookListObj( )[0].text self.assertIs( bookname in first_book_in_shopping_cart, True) shopping_cart_page.shoppingCartBookOptionListObj( )[0].click() shopping_cart_page.shoppingCartDeleteButton( ).click() time.sleep(2) shopping_cart_page.shoppingCartDeleteConfirmButton( ).click() TesShoppingCart.excelObj.write_cell_value( idx + 2, execute_testResult, 'success', 'green') TesShoppingCart.excelObj.write_cell_value( idx + 2, execute_time, str(round( (time.time() - start_time) / 1000, 2)) + 's') logger.info('购物车删除书籍,用例通过!') break except AssertionError as e: logger.debug('购物车删除书籍,用例不通过!') TesShoppingCart.excelObj.write_cell_value( idx + 2, execute_testResult, 'fail', 'red') TesShoppingCart.excelObj.write_cell_value( idx + 2, execute_time, str(time.time() - start_time) + 'ms', 'red') TesShoppingCart.excelObj.write_cell_value( idx + 2, book_isExecute, 'N') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e else: continue
def test_Add_Book_and_Buy_Book(self): # 获取是否执行列 isExecuteUser = TesShoppingCart.excelObj.get_col_values( book_isExecute, sheet_name='购买书籍') pc = ParseConfigFile() for idx, i in enumerate(isExecuteUser[1:]): start_time = time.time() if i == 'Y': bookid = TesShoppingCart.excelObj.get_cell_value( idx + 2, book_id) bookname = TesShoppingCart.excelObj.get_cell_value( idx + 2, book_name) logger.info("执行测试数据:%s,%s" % (bookid, bookname)) # 通过接口api拿到我的书籍列表中的书 my_books_data = MyBooks.getData( TesShoppingCart.excelObj.get_cell_value( idx + 2, buyer_pin)) # 判断buyer是否已经拥有该书: have_flag = bookid in my_books_data if have_flag: TesShoppingCart.excelObj.write_cell_value( idx + 2, book_isExecute, 'N') else: try: TesShoppingCart.browser.get( pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书详页"页面...') book_detail_page = BookDetailPage( TesShoppingCart.browser) add_shopping_cart_button = book_detail_page.shopCartButton( ) # TesShoppingCart.browser.execute_script("arguments[0].scrollIntoView();", add_shopping_cart_button) add_shopping_cart_button.click() time.sleep(2) add_shopping_cart_button.click() shopping_cart_page = ShoppingCartPage( TesShoppingCart.browser) price = shopping_cart_page.shoppingCartBookPriceListObj( )[0].text book_image = shopping_cart_page.shoppingCartBookImageListObj( )[0] book_name_in_cart = shopping_cart_page.shoppingCartBookNameListObj( )[0] try: self.assertIs(book_image.is_displayed(), True) self.assertIs(book_name_in_cart.is_displayed(), True) first_book_in_shopping_cart = shopping_cart_page.shoppingCartBookListObj( )[0].text self.assertIs( bookname in first_book_in_shopping_cart, True) shopping_cart_page.shoppingCartBookOptionListObj( )[0].click() shopping_cart_page.shoppingCartSettlementButton( ).click() time.sleep(2) avail_amount = shopping_cart_page.shoppingCartSettlementAvailAmountObj( ).text.strip('-') settlement_amount = shopping_cart_page.shoppingCartSettlementAmountObj( ).text check_price = False if price == avail_amount and price == settlement_amount: check_price = True self.assertIs(check_price, True) shopping_cart_payable_amount = shopping_cart_page.shoppingCartPayableAmountObj( ).text if '¥0' in shopping_cart_payable_amount: shopping_cart_buy_confirm_btn = shopping_cart_page.shoppingCartBuyConfirmButton( ) shopping_cart_buy_confirm_btn.click() time.sleep(2) self.assertIs( "支付完成" == TesShoppingCart.browser.title, True) TesShoppingCart.excelObj.write_cell_value( idx + 2, book_isExecute, 'N') TesShoppingCart.excelObj.write_cell_value( idx + 2, execute_testResult, 'success', 'green') TesShoppingCart.excelObj.write_cell_value( idx + 2, execute_time, str( round( (time.time() - start_time) / 1000, 2)) + 's') logger.info('购物车购买书籍,用例通过!') break else: logger.warning('余额不足...') text_mail( '来自m站自动化测试脚本', '在购物车购买书籍测试用例中%s账户余额不足,请及时充值' % (not_vip_username)) self.assertTrue(1 == 2) except AssertionError as e: logger.debug('购物车删除书籍,用例不通过!') TesShoppingCart.excelObj.write_cell_value( idx + 2, execute_testResult, 'fail', 'red') TesShoppingCart.excelObj.write_cell_value( idx + 2, execute_time, str(time.time() - start_time) + 'ms', 'red') TesShoppingCart.excelObj.write_cell_value( idx + 2, book_isExecute, 'N') raise e except ElementNotVisibleException as e: TesShoppingCart.excelObj.write_cell_value( idx + 2, book_isExecute, 'N') logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: TesShoppingCart.excelObj.write_cell_value( idx + 2, book_isExecute, 'N') logger.error("数据问题..重试") except Exception as e: TesShoppingCart.excelObj.write_cell_value( idx + 2, book_isExecute, 'N') logger.error(e) raise e else: continue
if __name__ == "__main__": from selenium import webdriver import time from util.SimulateLogin_galaxyS5 import simulator_login mobile_emulation = {'deviceName': 'Galaxy S5'} options = webdriver.ChromeOptions() options.add_experimental_option("mobileEmulation", mobile_emulation) browser = webdriver.Chrome(chrome_options=options) browser.get("https://plogin.m.jd.com/user/login.action") # 测试退出按钮 LoginAction.login('你的用户名', '你的密码', browser, 'https://jdread.jd.com/h5/m/p_book_detail/30132192') # minePage=MinePage(browser) # minePage.ExitButtonObj().click() book_detail_page = BookDetailPage(browser) book_detail_page.catalogButton().click() time.sleep(2) catagoryPage = CatagoryPage(browser) time.sleep(2) print(catagoryPage.titleObj().is_displayed()) print(catagoryPage.sortButton().is_displayed()) # print(catagoryPage.canAccessChapters()[0].is_displayed()) # print(catagoryPage.cannotAccessChapters()[0].is_displayed()) print(catagoryPage.firstChapter().is_displayed()) # time.sleep(2) # bookCityPage.toolButtonObj().click() time.sleep(2) browser.quit()
def test_read_book_button(self): logger.info("开始执行书详页-阅读按钮脚本...") # 获取是否执行列 isExecuteUser = testBookDetailNeedLogin.excelObj.get_col_values( book_isExecute, sheet_name='VIP逻辑验证书籍') pc = ParseConfigFile() for idx, i in enumerate(isExecuteUser[1:]): start_time = time.time() data_Type = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_type) if 'Y' == i and "VIP_user_VIP_book" == data_Type: bookid = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_id) bookname = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_name) username = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, acount_username_check_vip) password = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, acount_password_check_vip) logger.info("执行测试数据:%s,%s,%s,%s" % (bookid, bookname, username, password)) try: browser = webdriver.Chrome(chrome_options=options) # 登陆 logger.info('登录操作执行...') browser.get("https://plogin.m.jd.com/user/login.action") LoginAction.login(username, password, browser, pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书籍详情"页面...') bookDetailPage = BookDetailPage(browser) read_button = bookDetailPage.readButton() browser.execute_script("arguments[0].scrollIntoView();", read_button) try: self.assertIs(read_button.text == 'VIP免费读', True) read_button.click() time.sleep(2) check_url = '%sstatic/read/dist/index.html?ebookId=%s&name=' % ( url, bookid) in browser.current_url self.assertIs(check_url, True) logger.info('执行书详页阅读按钮脚本成功!用例通过') except AssertionError as e: logger.debug('执行书详页-阅读按钮脚本失败!用例不通过') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e elif 'Y' == i and "VIP_user_VIP_book" != data_Type: bookid = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_id) bookname = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_name) username = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, acount_username_check_vip) password = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, acount_password_check_vip) logger.info("执行测试数据:%s,%s,%s,%s" % (bookid, bookname, username, password)) try: browser = webdriver.Chrome(chrome_options=options) # 登陆 logger.info('登录操作执行...') browser.get("https://plogin.m.jd.com/user/login.action") LoginAction.login(username, password, browser, pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书籍详情"页面...') bookDetailPage = BookDetailPage(browser) read_button = bookDetailPage.readButton() browser.execute_script("arguments[0].scrollIntoView();", read_button) try: self.assertIs(read_button.text == '立即阅读', True) read_button.click() time.sleep(2) check_url = '%sstatic/read/dist/index.html?ebookId=%s&name=' % ( url, bookid) in browser.current_url self.assertIs(check_url, True) logger.info('执行书详页阅读按钮脚本成功!用例通过') except AssertionError as e: logger.debug('执行书详页-阅读按钮脚本失败!用例不通过') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e else: continue
def test_add_shop_cart_button(self): logger.info("开始执行书详页-加入购物车按钮脚本...") # 获取是否执行列 isExecuteUser = testBookDetailNeedLogin.excelObj.get_col_values( book_isExecute, sheet_name='VIP逻辑验证书籍') pc = ParseConfigFile() for idx, i in enumerate(isExecuteUser[1:]): start_time = time.time() data_Type = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_type) if 'Y' == i and "VIP_user_NVIP_book" == data_Type: bookid = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_id) bookname = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_name) username = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, acount_username_check_vip) password = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, acount_password_check_vip) logger.info("执行测试数据:%s,%s,%s,%s" % (bookid, bookname, username, password)) try: browser = webdriver.Chrome(chrome_options=options) # 登陆 logger.info('登录操作执行...') browser.get("https://plogin.m.jd.com/user/login.action") LoginAction.login(username, password, browser, pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书籍详情"页面...') bookDetailPage = BookDetailPage(browser) add_shopping_cart_button = bookDetailPage.shopCartButton() browser.execute_script("arguments[0].scrollIntoView();", add_shopping_cart_button) add_shopping_cart_button.click() time.sleep(2) add_shopping_cart_button.click() try: shopping_cart_page = ShoppingCartPage(browser) first_book_in_shopping_cart = shopping_cart_page.shoppingCartBookListObj( )[0].text self.assertIs(bookname in first_book_in_shopping_cart, True) shopping_cart_page.shoppingCartBookOptionListObj( )[0].click() shopping_cart_page.shoppingCartDeleteButton().click() time.sleep(2) shopping_cart_page.shoppingCartDeleteConfirmButton( ).click() logger.info('执行书详页加入购物车脚本成功!用例通过') except AssertionError as e: logger.debug('执行书详页-加入购物车脚本失败!用例不通过') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e else: continue
def test_book_write_comment_page(self): logger.info("开始执行书详页-写书评页面元素验证脚本...") #获取是否执行列 isExecuteUser = testBookDetailNeedLogin.excelObj.get_col_values( book_isExecute, sheet_name='写书评验证书籍') pc = ParseConfigFile() for idx, i in enumerate(isExecuteUser[1:]): start_time = time.time() if 'Y' == i: bookid = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, catagory_book_id) bookname = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, catagory_book_name) username = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, catagory_acount_username) password = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, catagory_acount_password) bookauthor = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, catagory_book_author) logger.info("执行测试数据:%s,%s,%s,%s" % (bookid, bookname, username, password)) try: browser = webdriver.Chrome(chrome_options=options) # 登陆 logger.info('登录操作执行...') browser.get("https://plogin.m.jd.com/user/login.action") LoginAction.login(username, password, browser, pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书籍详情"页面...') bookDetailPage = BookDetailPage(browser) bookDetailPage.writeBookCommentButton().click() time.sleep(2) writeCommentPage = WriteCommentPage(browser) try: self.assertIs( writeCommentPage.titleObj().is_displayed(), True) self.assertIs( writeCommentPage.bookNameObj().text == bookname, True) a = writeCommentPage.bookAuthorObj().text + "[著]" self.assertIs(a == bookauthor, True) style = writeCommentPage.publishButtonText( ).get_attribute("style") #黑色color:rgb(222,219,214) #红色:color:rgb(239,60,60) #返回内容'color: rgb(222, 219, 214);' logger.info('执行书详页-目录验证脚本成功!用例通过') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, catagory_execute_testResult, 'success', 'green') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, catagory_execute_time, str(round( (time.time() - start_time) / 1000, 2)) + 's') except AssertionError as e: logger.debug('执行书详页-目录验证脚本失败!用例不通过') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, catagory_execute_testResult, 'fail', 'red') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, catagory_execute_time, str(time.time() - start_time) + 'ms', 'red') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e else: continue
def test_VIP_user_read_VIP_book(self): logger.info("开始执行书详页-VIP用户查看VIP书详页脚本...") #获取是否执行列 isExecuteUser = testBookDetailNeedLogin.excelObj.get_col_values( book_isExecute, sheet_name='VIP逻辑验证书籍') pc = ParseConfigFile() for idx, i in enumerate(isExecuteUser[1:]): start_time = time.time() data_Type = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_type) if 'Y' == i and "VIP_user_VIP_book" == data_Type: bookid = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_id) bookname = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_name) username = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, acount_username_check_vip) password = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, acount_password_check_vip) logger.info("执行测试数据:%s,%s,%s,%s" % (bookid, bookname, username, password)) try: browser = webdriver.Chrome(chrome_options=options) #登陆 logger.info('登录操作执行...') browser.get("https://plogin.m.jd.com/user/login.action") LoginAction.login(username, password, browser, pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书籍详情"页面...') bookDetailPage = BookDetailPage(browser) vip_price = bookDetailPage.vipOriginalPriceObj() vip_read_button = bookDetailPage.vipReadButtonObj() vip_read_button_text = bookDetailPage.vipReadButtonTextObj( ) vip_read_for_free_text = bookDetailPage.vipReadForFreeTextObj( ) vip_flag = bookDetailPage.vipFlagObj() try: self.assertIs(vip_read_for_free_text.is_displayed(), True) self.assertIs(vip_read_button.is_displayed(), True) self.assertIs("VIP免费读" == vip_read_button_text.text, True) self.assertIs(vip_price.is_displayed(), True) self.assertIs(vip_flag.is_displayed(), True) logger.info('执行书详页-VIP用户查看VIP书详页脚本成功!用例通过') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, execute_testResult, 'success', 'green') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, execute_time, str(round( (time.time() - start_time) / 1000, 2)) + 's') except AssertionError as e: logger.debug('执行书详页-VIP用户查看VIP书详页脚本失败!用例不通过') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, execute_testResult, 'fail', 'red') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, execute_time, str(time.time() - start_time) + 'ms', 'red') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e else: continue
def test_NVIP_user_read_NVIP_book(self): logger.info("开始执行书详页-NVIP用户查看NVIP书详页脚本...") #获取是否执行列 isExecuteUser = testBookDetailNeedLogin.excelObj.get_col_values( book_isExecute, sheet_name='VIP逻辑验证书籍') pc = ParseConfigFile() for idx, i in enumerate(isExecuteUser[1:]): start_time = time.time() data_Type = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_type) if 'Y' == i and "NVIP_user_NVIP_book" == data_Type: bookid = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_id) bookname = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, book_name) username = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, acount_username_check_vip) password = testBookDetailNeedLogin.excelObj.get_cell_value( idx + 2, acount_password_check_vip) logger.info("执行测试数据:%s,%s,%s,%s" % (bookid, bookname, username, password)) try: browser = webdriver.Chrome(chrome_options=options) logger.info('启动浏览器,访问"书籍详情"页面...') browser.get(pc.getUrl('bookdetail') % (bookid)) bookDetailPage = BookDetailPage(browser) read_button_text = bookDetailPage.readButtonTextObj() price = bookDetailPage.realPriceObj() try: self.assertIs("立即阅读" == read_button_text.text, True) self.assertIs(price.is_displayed(), True) self.assertIs("VIP免费阅读" not in browser.page_source, True) self.assertIs( "开通VIP,免费阅读此书>" not in browser.page_source, True) logger.info('执行书详页-NVIP用户查看NVIP书详页脚本成功!用例通过') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, execute_testResult, 'success', 'green') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, execute_time, str(round( (time.time() - start_time) / 1000, 2)) + 's') except AssertionError as e: logger.debug('执行书详页-NVIP用户查看NVIP书详页脚本失败!用例不通过') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, execute_testResult_book_detail, 'fail', 'red') testBookDetailNeedLogin.excelObj.write_cell_value( idx + 2, execute_time_book_detail, str(time.time() - start_time) + 'ms', 'red') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e else: continue
def test_price_sell_off_book(self): logger.info("开始执行书详页打折书价格脚本...") pc = ParseConfigFile() try: # books_data=getDataList('本周特价') testBookDetailNotNeedLogin.browser.get(pc.getUrl('bookcity')) bookcityPage = BookCityPage(testBookDetailNotNeedLogin.browser) bookcityPage.channelFoldDownButton().click() time.sleep(2) bookcityPage.channelFeaturedButton().click() time.sleep(2) bookcityPage.discountButton().click() # time.sleep(2) # discountPage = DiscountPage(testBookDetailNotNeedLogin.browser) # discountPage.first_book().click() time.sleep(2) current_url=testBookDetailNotNeedLogin.browser.current_url collection_id=re.search(r'\d{4}',current_url).group(0) collection_data=CollectionDetail.getDataJson(collection_id) bookid=str(collection_data['data']['items'][0]['ebook_id']) testBookDetailNotNeedLogin.browser.get(pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书籍详情"页面...') bookDetailPage = BookDetailPage(testBookDetailNotNeedLogin.browser) real_price_obj = bookDetailPage.realPriceObj() original_price_obj=bookDetailPage.originalPriceObj() discount_obj=bookDetailPage.discountObj() # color=discount.get_attribute('color') api_realprice = str(BookDetai.getData(bookid)['jd_price']) api_price = str(BookDetai.getData(bookid)['price']) api_discount= str(BookDetai.getData(bookid)['discount']) real_price=str(int(round(float(real_price_obj.text.strip('¥')) * 100))) original_price=str(int(round(float(original_price_obj.text.strip('¥'))* 100))) discount= discount_obj.text try: self.assertIs(real_price_obj.is_displayed() and api_realprice == real_price, True) self.assertIs(original_price_obj.is_displayed() and api_price == original_price, True) self.assertIs(discount_obj.is_displayed() and api_discount == discount, True) logger.info('书详页折扣书价格脚本执行成功!用例通过') except AssertionError as e: logger.debug('书详页折扣书价格脚本执行失败!用例通过') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e
def test_book_messages(self): logger.info("开始执行书详页图书信息脚本...") pc = ParseConfigFile() try: ebookid='30331055' testBookDetailNotNeedLogin.browser.get(pc.getUrl('bookdetail') % (ebookid)) logger.info('启动浏览器,访问"书籍详情"页面...') bookDetailPage = BookDetailPage(testBookDetailNotNeedLogin.browser) api_book_message={}.fromkeys(['file_size','isbn','publish_time','word_count','format','edition']) api_book_message['file_size']=str(BookDetai.getData(ebookid)['file_size'])+'M' api_book_message['isbn']=BookDetai.getData(ebookid)['isbn'] api_book_message['publish_time']=BookDetai.getData(ebookid)['publish_time'] api_book_message['word_count']=str(round(BookDetai.getData(ebookid)['word_count']/10000,1))+'万' api_book_message['format']=BookDetai.getData(ebookid)['format'] api_book_message['edition']=str(BookDetai.getData(ebookid)['edition']) book_Message_Title=bookDetailPage.bookMessageTitle() testBookDetailNotNeedLogin.browser.execute_script("arguments[0].scrollIntoView();", book_Message_Title) book_File_Size_Label=bookDetailPage.bookFileSizeLabel() book_File_Size_Obj=bookDetailPage.bookFileSizeObj() book_File_Type_Label=bookDetailPage.bookFileTypeLabel() book_File_Type_Obj=bookDetailPage.bookFileTypeObj() book_ISBN_Code_Label=bookDetailPage.bookISBNCodeLabel() book_ISBN_Code_Obj=bookDetailPage.bookISBNCodeObj() book_Chars_Num_Label=bookDetailPage.bookCharsNumLabel() book_Chars_Num_Obj=bookDetailPage.bookCharsNumObj() book_Public_Time_Label=bookDetailPage.bookPublicTimeLabel() book_Public_Time_Obj=bookDetailPage.bookPublicTimeObj() book_Public_Times_Label=bookDetailPage.bookPublicTimesLabel() book_Public_Times_Obj=bookDetailPage.bookPublicTimesObj() try: self.assertIs(book_Message_Title.is_displayed(), True) self.assertIs(book_File_Size_Label.is_displayed(), True) self.assertIs(book_File_Type_Label.is_displayed(), True) self.assertIs(book_ISBN_Code_Label.is_displayed(), True) self.assertIs(book_Chars_Num_Label.is_displayed(), True) self.assertIs(book_Public_Time_Label.is_displayed(), True) self.assertIs(book_Public_Times_Label.is_displayed(), True) self.assertIs(api_book_message['file_size'] in book_File_Size_Obj.text, True) self.assertIs(api_book_message['isbn'] in book_ISBN_Code_Obj.text, True) self.assertIs(api_book_message['publish_time'] in book_Public_Time_Obj.text, True) self.assertIs(api_book_message['word_count'] in book_Chars_Num_Obj.text, True) self.assertIs(api_book_message['format'] in book_File_Type_Obj.text, True) self.assertIs(api_book_message['edition'] in book_Public_Times_Obj.text+'未知', True) logger.info('书详页相关图书推荐脚本执行成功!用例通过') except AssertionError as e: logger.debug('书详页相关图书推荐脚本执行失败!用例通过') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e
def test_book_detail_comment(self): logger.info("开始执行书详页-书评列表验证脚本...") # 获取是否执行列 isExecuteUser = testBookDetailNotNeedLogin.excelObj.get_col_values(book_isExecute, sheet_name='书详页书评验证书籍') pc = ParseConfigFile() for idx, i in enumerate(isExecuteUser[1:]): start_time = time.time() if 'Y' == i: bookid = testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, catagory_book_id) bookname = testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, catagory_book_name) username = testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, catagory_acount_username) password = testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, catagory_acount_password) logger.info("执行测试数据:%s,%s,%s,%s" % (bookid, bookname, username, password)) try: testBookDetailNotNeedLogin.browser.get(pc.getUrl('bookdetail') % (bookid)) logger.info('启动浏览器,访问"书详页"页面...') book_detail_page=BookDetailPage(testBookDetailNotNeedLogin.browser) comment_title=book_detail_page.commentTitleObj() testBookDetailNotNeedLogin.browser.execute_script("arguments[0].scrollIntoView();", comment_title) api_comments=GetTwentycomments.getCommentsByPopular(bookid) api_comments_num=len(api_comments) try: if api_comments_num == 0: no_comment_text = book_detail_page.noCommentTextObj() self.assertIs(no_comment_text.is_displayed(), True) else: if api_comments_num > 3: all_comments_text=book_detail_page.allCommentsTextObj() self.assertIs(all_comments_text.is_displayed(), True) first_comment_user_head=book_detail_page.commentUserHeadImg() first_comment_user_name=book_detail_page.commentUserNameObj() first_comment_user_level=book_detail_page.commentUserLevelObj() first_comment_content=book_detail_page.commentContentObj() first_comment_time=book_detail_page.commentTimeObj() check_result=first_comment_user_head.is_displayed() and \ first_comment_user_name.is_displayed()and \ first_comment_user_level.is_displayed() and \ first_comment_content.is_displayed() and \ first_comment_time.is_displayed() self.assertIs(check_result, True) logger.info('执行书详页-书评列表验证脚本成功!用例通过') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, catagory_execute_testResult, 'success', 'green') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, catagory_execute_time, str(round((time.time() - start_time) / 1000, 2)) + 's') except AssertionError as e: logger.debug('执行书详页-书评列表验证脚本失败!用例不通过') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, catagory_execute_testResult, 'fail', 'red') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, catagory_execute_time, str(time.time() - start_time) + 'ms', 'red') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e else: continue
def test_book_cover_author_publish_recmmand_name(self): logger.info("开始执行书详页-书籍封面、书名、作者和出版社脚本...") #获取是否执行列 isExecuteUser=testBookDetailNotNeedLogin.excelObj.get_col_values(book_isExecute_book_detail, sheet_name='基本信息验证书籍') pc = ParseConfigFile() for idx,i in enumerate(isExecuteUser[1:]): start_time=time.time() data_Type=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_type) if 'Y'==i : bookid=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_id) bookname=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_name) bookAuthor=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_author) bookPublish=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_publish) logger.info("执行测试数据:%s,%s,%s,%s"%(bookid,bookname,bookAuthor,bookPublish)) try: logger.info('启动浏览器,访问"书籍详情"页面...') testBookDetailNotNeedLogin.browser.get(pc.getUrl('bookdetail') % (bookid)) bookDetailPage = BookDetailPage(testBookDetailNotNeedLogin.browser) book_cover_obj=bookDetailPage.bookCoverObj() book_publish_obj=bookDetailPage.publishObj() book_author_obj=bookDetailPage.authorObj() book_name_obj=bookDetailPage.bookNameObj() book_recommand_obj=bookDetailPage.foldRecommandObj() try: self.assertIs(book_cover_obj.is_displayed(),True) self.assertIs(book_publish_obj.text.strip(string.whitespace)==bookPublish.strip(string.whitespace),True) self.assertIs(book_author_obj.text.strip(string.whitespace)==bookAuthor.strip(string.whitespace),True) self.assertIs(book_name_obj.text.strip(string.whitespace)==bookname.strip(string.whitespace),True) self.assertIs(book_recommand_obj.is_displayed(),True) logger.info('执行书详页-书籍封面、书名、作者和出版社脚本成功!用例通过') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_testResult_book_detail, 'success', 'green') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_time_book_detail, str(round((time.time() - start_time) / 1000, 2)) + 's') except AssertionError as e: logger.debug('执行书详页--书籍封面、书名、作者和出版社脚本失败!用例不通过') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_testResult_book_detail, 'fail', 'red') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_time_book_detail, str(time.time() - start_time) + 'ms', 'red') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e else: continue
def test_book_comment(self): logger.info("开始执行书详页-书籍评论脚本...") #获取是否执行列 isExecuteUser=testBookDetailNotNeedLogin.excelObj.get_col_values(book_isExecute_book_detail, sheet_name='基本信息验证书籍') pc = ParseConfigFile() for idx,i in enumerate(isExecuteUser[1:]): start_time=time.time() data_Type=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_type) if 'Y'==i : bookid=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_id) bookname=testBookDetailNotNeedLogin.excelObj.get_cell_value(idx + 2, book_name) logger.info("执行测试数据:%s,%s"%(bookid,bookname)) try: logger.info('启动浏览器,访问"书籍详情"页面...') testBookDetailNotNeedLogin.browser.get(pc.getUrl('bookdetail') % (bookid)) bookDetailPage = BookDetailPage(testBookDetailNotNeedLogin.browser) api_book_comment_stars_count = int(BookDetai.getData(bookid)['star']) api_book_comment_count = int(BookDetai.getData(bookid)['comment_count']) try: if api_book_comment_count > 0: book_comment_stars_obj = bookDetailPage.activeCommentStarObj() book_comment_count_obj = bookDetailPage.commentCountObj() book_comments_count = int( re.search(r'\d+', book_comment_count_obj.text.strip(string.whitespace)).group()) self.assertIs(api_book_comment_stars_count==len(book_comment_stars_obj),True) self.assertIs(api_book_comment_count==book_comments_count,True) else: book_comment_text=bookDetailPage.commentCountObj().text self.assertIs("暂无评分"==book_comment_text,True) logger.info('执行书详页-书籍评论脚本成功!用例通过') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_testResult_book_detail, 'success', 'green') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_time_book_detail, str(round((time.time() - start_time) / 1000, 2)) + 's') except AssertionError as e: logger.debug('执行书详页-书籍评论脚本失败!用例不通过') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_testResult_book_detail, 'fail', 'red') testBookDetailNotNeedLogin.excelObj.write_cell_value(idx + 2, execute_time_book_detail, str(time.time() - start_time) + 'ms', 'red') raise e except ElementNotVisibleException as e: logger.error("数据问题,元素没有找到..") except NoSuchElementException as e: logger.error("数据问题..重试") except Exception as e: logger.error(e) raise e else: continue