From 7ba52a3bf3707704bd526f9967c802e9be6c1b27 Mon Sep 17 00:00:00 2001 From: "licy@guangda.work" Date: Fri, 14 Apr 2023 17:11:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Browser/dusktest/data/account.php | 7 ++- tests/Browser/dusktest/data/account_page.php | 20 ++++++ .../data/images/Headpicture/Headpicture.jpeg | Bin 0 -> 28424 bytes tests/Browser/dusktest/data/index_page.php | 19 +++++- tests/Browser/dusktest/data/product_1.php | 4 ++ .../dusktest/page/front/AddCartTest.php | 57 ++++++++++++++++++ .../dusktest/page/front/CartCheckoutTest.php | 56 +++++++++++++++++ .../dusktest/page/front/EditUserInfo.php | 57 ++++++++++++++++++ .../Browser/dusktest/page/front/OrderTest.php | 2 +- .../dusktest/page/front/RemoveCartTest.php | 52 ++++++++++++++++ .../page/front/RemoveWishlistTest.php | 54 +++++++++++++++++ .../dusktest/page/front/SignOutTest.php | 41 +++++++++++++ .../dusktest/page/front/WishlistTest.php | 54 +++++++++++++++++ 13 files changed, 420 insertions(+), 3 deletions(-) create mode 100644 tests/Browser/dusktest/data/images/Headpicture/Headpicture.jpeg create mode 100644 tests/Browser/dusktest/page/front/AddCartTest.php create mode 100644 tests/Browser/dusktest/page/front/CartCheckoutTest.php create mode 100644 tests/Browser/dusktest/page/front/EditUserInfo.php create mode 100644 tests/Browser/dusktest/page/front/RemoveCartTest.php create mode 100644 tests/Browser/dusktest/page/front/RemoveWishlistTest.php create mode 100644 tests/Browser/dusktest/page/front/SignOutTest.php create mode 100644 tests/Browser/dusktest/page/front/WishlistTest.php diff --git a/tests/Browser/dusktest/data/account.php b/tests/Browser/dusktest/data/account.php index eb260273..cc7659dd 100644 --- a/tests/Browser/dusktest/data/account.php +++ b/tests/Browser/dusktest/data/account.php @@ -5,5 +5,10 @@ const add_address = [ "add_code"=>"643203",//add_code "add_address1"=>"test1",//add_address1 "add_address2"=>"test2",//add_address2 - ]; +const user_edit = [ + "upload_images"=>'/../../data/images/Headpicture/Headpicture.jpeg',//上传头像 + "user_name"=>"admin",//修改名字 + "user_email"=>"admin@163.com",//修改emial +]; + diff --git a/tests/Browser/dusktest/data/account_page.php b/tests/Browser/dusktest/data/account_page.php index 2a96a88f..5a56bbe4 100644 --- a/tests/Browser/dusktest/data/account_page.php +++ b/tests/Browser/dusktest/data/account_page.php @@ -2,6 +2,7 @@ const account = [ "login_url" =>"/account", "go_index"=>"Home",//beikeshop图标 + "SignOut"=>"Sign Out"//sign ]; const address = [ "login_url" =>"/account/addresses", @@ -20,4 +21,23 @@ const address = [ "assert"=>"Default Address", //addresses ]; +const Edit = [ + "login_url" =>"/account/edit", + "go_Edit"=>"Edit",//点击edit + "upload_btn"=>"#address-app > div > div.col-12.col-md-9 > div > div.card-body.h-600 > form > div.bg-light.rounded-3.p-4.mb-4 > div > div > label",//上传头像图标 + "Confirm_btn"=>"Confirm", + "user_name"=>"#address-app > div > div.col-12.col-md-9 > div > div.card-body.h-600 > form > div.row.gx-4.gy-3 > div:nth-child(1) > input",//更改用户名 + "user_email"=>"#address-app > div > div.col-12.col-md-9 > div > div.card-body.h-600 > form > div.row.gx-4.gy-3 > div:nth-child(2) > input",//更改用户email + "Submit"=>"Submit",//add_phone + "assert"=>"Modify Success!", +]; +const Wishlist = [ + "login_url" =>"/account/edit", + "go_Wishlist"=>"Wishlist",//点击Wishlist + "Check_Details"=>"Check Details",//查看详情按钮 + "remove_Wishlist"=>"body > div.container > div > div.col-12.col-md-9 > div > div.card-body > table > tbody > tr > td.text-end > div > button", + "no_data"=>".text-secondary fs-4 mb-3", + +]; + diff --git a/tests/Browser/dusktest/data/images/Headpicture/Headpicture.jpeg b/tests/Browser/dusktest/data/images/Headpicture/Headpicture.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c8396c4fe4ccab2dc569cf09af61b4058bcff514 GIT binary patch literal 28424 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 "/", "product_img" => "#tab-product-0 > div > div:nth-child(1) > div > div.image > a",//购买商品图标 - "buy_btn" => "#product-top > div:nth-child(2) > div > div.quantity-btns > button.btn.btn-dark.ms-3.fw-bold",//购买按钮 "address_btn" => "#checkout-address-app > div.checkout-black > div.addresses-wrap > div > div > div > button", //添加地址 "login_text" => "Home", ]; +const index_top = [ + "wishlist_btn" => "",//购买商品图标 + // + "buy_btn" => "#product-top > div:nth-child(2) > div > div.quantity-btns > button.btn.btn-dark.ms-3.fw-bold",//购买按钮 + "address_btn" => "#checkout-address-app > div.checkout-black > div.addresses-wrap > div > div > div > button", //添加地址 + "login_text" => "Home", + + +]; +const index_cart = [ + "cart_product_text" => "#offcanvas-right-cart > div.offcanvas-body.pt-0 > div > div > div.product-info.d-flex.align-items-center > div.right.flex-grow-1 > a", + "cart_icon"=>"", + "product_text"=>"#offcanvas-right-cart > div.offcanvas-body.pt-0 > div > div > div.product-info.d-flex.align-items-center > div.right.flex-grow-1 > a",//购物车内商品名字 + "Delete_btn" => "#offcanvas-right-cart > div.offcanvas-body.pt-0 > div > div > div.product-info.d-flex.align-items-center > div.right.flex-grow-1 > div.product-bottom.d-flex.justify-content-between.align-items-center > span", //删除按钮 + "product_num"=>"#offcanvas-right-cart > div.offcanvas-footer > div.d-flex.justify-content-between.align-items-center.mb-2.p-3.bg-light.top-footer > div:nth-child(2) > strong:nth-child(2) > span", + "cart_Checkout"=>"#offcanvas-right-cart > div.offcanvas-footer > div.p-4 > a.btn.w-100.fw-bold.btn-dark.to-checkout", +]; + diff --git a/tests/Browser/dusktest/data/product_1.php b/tests/Browser/dusktest/data/product_1.php index d3201210..f606a5f2 100644 --- a/tests/Browser/dusktest/data/product_1.php +++ b/tests/Browser/dusktest/data/product_1.php @@ -2,6 +2,10 @@ const product = [ "login_url" =>"/products/1", "product_1"=> "Buy Now",//购买商品 + "Wishlist_icon"=>"Add To Favorites",//收藏 + "add_cart"=>"Add To Cart", + "product1_name"=>"#product-top > div:nth-child(2) > div > h1",//产品名字 + "buy_btn"=> "#product-top > div:nth-child(2) > div > div.quantity-btns > button.btn.btn-dark.ms-3.fw-bold",//购买按钮 "address_btn"=>"#checkout-address-app > div.checkout-black > div.addresses-wrap > div > div > div > button", //添加地址 "login_text"=> "Home", diff --git a/tests/Browser/dusktest/page/front/AddCartTest.php b/tests/Browser/dusktest/page/front/AddCartTest.php new file mode 100644 index 00000000..a437803b --- /dev/null +++ b/tests/Browser/dusktest/page/front/AddCartTest.php @@ -0,0 +1,57 @@ +browse(function (Browser $browser) + { + $browser->visit(login['login_url']) + //1.用户登录 + ->type(login['login_email'], true_login['email']) + ->type(login['login_pwd'], true_login['password']) + ->press(login['login_btn']) + ->pause(2000) + //2.点击home跳转到首页 + ->clickLink(account['go_index']) + //3.向下滑动页面直到找到元素 + ->scrollIntoView(index['product_img']) +// ->mouseover(index['product_img']) + ->pause(2000) + //2.点击要加入购物车的商品 + ->press(index['product_img']) + ->pause(2000); + + //3.获取当前产品标题 + $product_description = $browser->text(product['product1_name']); + $ProductUrl = $browser->driver->getCurrentURL(); + //4.点击收藏按钮 + $browser->visit($ProductUrl) + //5.点击加入购物车 + + ->press(product['add_cart']) + ->pause(3000) + //6.点击购物车按钮 + ->clickLink(index_cart['cart_icon']) + ->pause(10000); + //6.断言购物车内商品是否与先前商品相同 + $browser->assertSeeIn(index_cart['product_text'],$product_description) + ; + }); + } +} diff --git a/tests/Browser/dusktest/page/front/CartCheckoutTest.php b/tests/Browser/dusktest/page/front/CartCheckoutTest.php new file mode 100644 index 00000000..298218bc --- /dev/null +++ b/tests/Browser/dusktest/page/front/CartCheckoutTest.php @@ -0,0 +1,56 @@ +browse(function (Browser $browser) + { + $browser->visit(login['login_url']) + //1.用户登录 + ->type(login['login_email'], true_login['email']) + ->type(login['login_pwd'], true_login['password']) + ->press(login['login_btn']) + ->pause(2000) + //2.点击home跳转到首页 + ->clickLink(account['go_index']) + //3.向下滑动页面直到找到元素 + ->scrollIntoView(index['product_img']) + ->pause(2000) + //4.点击要加入购物车的商品 + ->press(index['product_img']) + ->pause(2000) + //5.点击加入购物车 + ->press(product['add_cart']) + ->pause(3000) + //6.点击购物车按钮 + ->clickLink(index_cart['cart_icon']) + ->pause(3000) + //7.点击结账按钮 + ->press(index_cart['cart_Checkout']) + ->pause(5000) + //8.点击确认按钮 + ->press(checkout['submit']) + ->pause(5000) + //9.断言 + ->assertSee(checkout['assert']) + + ; + }); + } +} diff --git a/tests/Browser/dusktest/page/front/EditUserInfo.php b/tests/Browser/dusktest/page/front/EditUserInfo.php new file mode 100644 index 00000000..91484fbd --- /dev/null +++ b/tests/Browser/dusktest/page/front/EditUserInfo.php @@ -0,0 +1,57 @@ +browse(function (Browser $browser) { + $browser->visit(login['login_url']) + //1.用户登录 + ->type(login['login_email'], true_login['email']) + ->type(login['login_pwd'], true_login['password']) + ->press(login['login_btn']) + ->pause(2000) + //当前网址断言 + ->assertUrlIs('http://autotest.test/account', $browser->driver->getCurrentURL()) + //2.点击编辑 + ->clickLink(Edit['go_Edit']) + ->pause(1000) + //3.点击上传头像按钮 +// ->press(Edit['upload_btn']) +// ->pause(3000) +// ->waitFor('#file-input') // 等待文件上传控件出现 +// ->assertVisible('#file-input') // 确保文件上传控件可见 +// ->assertEnabled('#file-input') // 确保文件上传控件可用 +// ->attach(Edit['upload_btn'],realpath('E:/phpstudy_pro/WWW/autotest.test/beikeshop/tests/Browser/dusktest/data/images/Headpicture/Headpicture.jpeg')) +// ->press(Edit['Confirm_btn']) +// ->pause(3000) + //3.1 name + ->type(Edit['user_name'], user_edit['user_name']) + //3.2 phone + ->type(Edit['user_email'], user_edit['user_email']) + //3.3 save + ->press((Edit['Submit'])) + ->pause(3000) + ->assertSee(Edit['assert']); + //3.向下滑动页面直到找到元素 + + }); + } +} diff --git a/tests/Browser/dusktest/page/front/OrderTest.php b/tests/Browser/dusktest/page/front/OrderTest.php index 7918ba54..32aa7566 100644 --- a/tests/Browser/dusktest/page/front/OrderTest.php +++ b/tests/Browser/dusktest/page/front/OrderTest.php @@ -31,7 +31,7 @@ class OrderTest extends DuskTestCase ->assertUrlIs('http://autotest.test/account', $browser->driver->getCurrentURL()) //打印查看当前网址 // $html = $browser->driver->getCurrentURL(); -// print_r($html); +// print_r($html) // ->driver->getCurrentURL() //2.点击home跳转到首页 ->clickLink(account['go_index']) diff --git a/tests/Browser/dusktest/page/front/RemoveCartTest.php b/tests/Browser/dusktest/page/front/RemoveCartTest.php new file mode 100644 index 00000000..b876472b --- /dev/null +++ b/tests/Browser/dusktest/page/front/RemoveCartTest.php @@ -0,0 +1,52 @@ +browse(function (Browser $browser) + { + $browser->visit(login['login_url']) + //1.用户登录 + ->type(login['login_email'], true_login['email']) + ->type(login['login_pwd'], true_login['password']) + ->press(login['login_btn']) + ->pause(2000) + //2.点击home跳转到首页 + ->clickLink(account['go_index']) + //3.向下滑动页面直到找到元素 + ->scrollIntoView(index['product_img']) + ->pause(2000) + //4.点击要加入购物车的商品 + ->press(index['product_img']) + ->pause(2000) + //5.点击加入购物车 + ->press(product['add_cart']) + ->pause(3000) + //6.点击购物车按钮 + ->clickLink(index_cart['cart_icon']) + ->pause(3000) + //7.点击移除按钮 + ->press(index_cart['Delete_btn']) + ->pause(3000) + ->assertSeeIn(index_cart['product_num'],"0") + ->pause(3000) + ; + }); + } +} diff --git a/tests/Browser/dusktest/page/front/RemoveWishlistTest.php b/tests/Browser/dusktest/page/front/RemoveWishlistTest.php new file mode 100644 index 00000000..58d741f8 --- /dev/null +++ b/tests/Browser/dusktest/page/front/RemoveWishlistTest.php @@ -0,0 +1,54 @@ +browse(function (Browser $browser) + { + $browser->visit(login['login_url']) + //1.用户登录 + ->type(login['login_email'], true_login['email']) + ->type(login['login_pwd'], true_login['password']) + ->press(login['login_btn']) + ->pause(2000) + //2.点击home跳转到首页 + ->clickLink(account['go_index']) + //3.向下滑动页面直到找到元素 + ->scrollIntoView(index['product_img']) + ->pause(2000) + ->press(index['product_img']) + ->pause(2000); + //4.保存当前网址 + $ProductUrl = $browser->driver->getCurrentURL(); + //5.点击收藏按钮 + $browser->visit($ProductUrl) + ->press(product['Wishlist_icon']) + ->pause(3000) + //6.点击顶部收藏认按钮 + ->clickLink(index_top['wishlist_btn']) +// ->pause(1000) + //7.点击移除按钮 + ->press(Wishlist['remove_Wishlist']) + ->pause(1000) + //8.断言 +// ->assertUrlIs($ProductUrl,$browser->driver->getCurrentURL()) + ; + }); + } +} diff --git a/tests/Browser/dusktest/page/front/SignOutTest.php b/tests/Browser/dusktest/page/front/SignOutTest.php new file mode 100644 index 00000000..0476afda --- /dev/null +++ b/tests/Browser/dusktest/page/front/SignOutTest.php @@ -0,0 +1,41 @@ +browse(function (Browser $browser) + { + $browser->visit(login['login_url']) + //1.登录 + ->type(login['login_email'], true_login['email']) + ->type(login['login_pwd'], true_login['password']) + ->press(login['login_btn']) + ->pause(2000) + //2.退出 + ->clickLink(account['SignOut']) + ->pause(3000) + ->assertSee(false_login['false_assert']); +// ->assertSee(true_login['assert']); + }); + } +} diff --git a/tests/Browser/dusktest/page/front/WishlistTest.php b/tests/Browser/dusktest/page/front/WishlistTest.php new file mode 100644 index 00000000..38406c61 --- /dev/null +++ b/tests/Browser/dusktest/page/front/WishlistTest.php @@ -0,0 +1,54 @@ +browse(function (Browser $browser) + { + $browser->visit(login['login_url']) + //1.用户登录 + ->type(login['login_email'], true_login['email']) + ->type(login['login_pwd'], true_login['password']) + ->press(login['login_btn']) + ->pause(2000) + //2.点击home跳转到首页 + ->clickLink(account['go_index']) + //3.向下滑动页面直到找到元素 + ->scrollIntoView(index['product_img']) + ->pause(2000) + ->press(index['product_img']) + ->pause(2000); + //4.保存当前网址 + $ProductUrl = $browser->driver->getCurrentURL(); + //5.点击收藏按钮 + $browser->visit($ProductUrl) + ->press(product['Wishlist_icon']) + ->pause(3000) + //6.点击顶部收藏认按钮 + ->clickLink(index_top['wishlist_btn']) + ->pause(1000) + //7.点击查看详情按钮 + ->clickLink(Wishlist['Check_Details']) + ->pause(1000) + //8.断言 + ->assertUrlIs($ProductUrl,$browser->driver->getCurrentURL()) + ; + }); + } +}