abcnull / webuitest4j

该项目是 java 编写的使用 selenium 依赖包的 WebUI 测试项目

Home Page:https://blog.csdn.net/abcnull/article/details/104119940

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于框架的内容

abcnull opened this issue · comments

框架使用 java+selenium+testng,其中还是用了 redis 用于做页面之间数据传递,不过没有 redis 的小伙伴也不要紧,因为没有 redis 丝毫不影响框架,即使控制出现 redis 连接报错,但是对于框架执行测试用例没有丝毫影响!丝毫!
还有,大家可能更喜欢 allure2 的测试报告,目前框架中的测试报告样式为 BeautifulReport 样式和 ExtentReport 样式,且二者都有!之后不久我会再集成一个 allure2 进去!尽请关注,(#^.^#)
框架使用 PageObject **,但是本人把 PO 中的数据和元素定位单独拎出来,因为考虑到项目过大,业务过于复杂,元素过多的情况!
驱动初始化操作本人放在了 BaseTest,不少人把驱动放在 Page 中,其实两种方式都是可以的!BaseTest 是所有测试用例类的父类,做测试配置初始化的工作,PageCommon 是所有页面类的父类,其关注的页面的详细操作!
OK 说了这么多,大家有问题请咨询我,我的邮箱在 github 介绍页面,WeChat:a463279708
只要我人还在,优化和扩展就不会停止……

driver已安装, 但运行包次错, 怎么解决呀
Uploading Snipaste_2023-11-28_21-53-04.png…

java.lang.IllegalStateException: The driver is not executable: /Users/liwenjian/Downloads/webuitest4j-master/target/test-classes/driver/chromedriver.exe

at com.google.common.base.Preconditions.checkState(Preconditions.java:585)
at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:150)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:141)
at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:35)
at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:159)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
at com.abcnull.basetest.ChromeDriverHandler.startBrowser(ChromeDriverHandler.java:71)
at com.abcnull.basetest.HeadHandler.startBrowser(HeadHandler.java:23)
at com.abcnull.basetest.DriverHandler.start(DriverHandler.java:35)
at com.abcnull.basetest.BaseDriver.startBrowser(BaseDriver.java:93)
at com.abcnull.basetest.BaseTest.beforeTest(BaseTest.java:80)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:458)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
at org.testng.TestRunner.beforeRun(TestRunner.java:529)
at org.testng.TestRunner.run(TestRunner.java:497)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.access$000(SuiteRunner.java:40)
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:489)
at org.testng.internal.thread.ThreadUtil$1.call(ThreadUtil.java:52)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)