在开始自动化时,您可能会遇到各种可能包含在自动化代码中的方法,技术,框架和工具。有时,与提供更好的灵活性或解决问题的更好方法相比,这种多功能性导致代码更加复杂。在编写自动化代码时,重要的是我们能够清楚地描述自动化测试的目标以及我们如何实现它。话虽如此,编写“干净的代码”以提供更好的可维护性和可读性很重要。编写干净的代码也不是一件容易的事,您需要牢记许多最佳实践。以下主题突出显示了编写更好的自动化代码应获得的8条银线。

1.命名约定

当我们从手动转向自动化或实际上以任何编程语言编写代码时,这确实是要牢记的经验法则之一。遵循正确的命名约定有助于更轻松地理解代码和维护。此命名约定暗含变量,方法,类和包。例如,您的方法名称应特定于其用途。“ Register_User()”方法描述了在该方法中显示用户注册的方法。明确定义的方法名称增加了脚本的易于维护和可读性。这同样适用于变量命名。我注意到许多人提到变量为a,b,c等,甚至将Web元素称为Weblelement1,Webelement2等。这样一来,用户看不到变量名与预期的一样。

以下是显示命名错误的示例:

public void Register_User() throws InterruptedException{driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);driver.get("https://www.lambdatest.com/ ");driver.manage().window().maximize();WebElement web1= driver.findElement(By.xpath("//a[text()='Free Sign Up']"));web1.click();WebElement web2=driver.findElement(By.xpath("//input[@name='organization']"));web2.sendKeys("LambdaTest");WebElement web3=driver.findElement(By.xpath("//input[@name='first_name']"));web3.sendKeys("Test");WebElement web4=driver.findElement(By.xpath("//input[@name='last_name']"));web4.sendKeys("User");WebElement web5=driver.findElement(By.xpath("//input[@name='email']"));web5.sendKeys("sadhvi.singh@navyuginfo.com");WebElement web6=driver.findElement(By.xpath("//input[@name='password']"));web6.sendKeys("TestUser123");WebElement web7=driver.findElement(By.xpath("//input[@name='phone']"));web7.sendKeys("9412262090");WebElement web8=driver.findElement(By.xpath("//button[text()='SIGN UP']"));web8.click();Thread.sleep(3500);}	

上面的代码显示了“ method1”如何不向用户提供任何线索,就像该方法的确切作用一样。另外,所有的web元素都通过web1,web2等表示。用户无法识别哪个Web元素捕获了哪个字段。

对于上述相同的代码,可以如下标记正确的表示方式:

public void Register_User() throws InterruptedException{driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);driver.get("https://www.lambdatest.com/ ");driver.manage().window().maximize();WebElement link= driver.findElement(By.xpath("//a[text()='Free Sign Up']"));link.click();WebElement organization=driver.findElement(By.xpath("//input[@name='organization']"));organization.sendKeys("LambdaTest");WebElement first_name=driver.findElement(By.xpath("//input[@name='first_name']"));first_name.sendKeys("Test");WebElement last_name=driver.findElement(By.xpath("//input[@name='last_name']"));last_name.sendKeys("User");WebElement email=driver.findElement(By.xpath("//input[@name='email']"));email.sendKeys("sadhvi.singh@navyuginfo.com");WebElement password=driver.findElement(By.xpath("//input[@name='password']"));password.sendKeys("TestUser123");WebElement phone_number=driver.findElement(By.xpath("//input[@name='phone']"));phone_number.sendKeys("9412262090");WebElement button=driver.findElement(By.xpath("//button[text()='SIGN UP']"));button.click();Thread.sleep(3500);String url= driver.getCurrentUrl();assertEquals("fail- unable to register", url, "https://accounts.lambdatest.com/user/email-verification");}

在这里,方法名称’Register_User’通过名称明确定义了用户,指示该方法包含与用户注册相关的代码。同样,所有Web元素或变量都具有与用于定义意图的捕获字段相关的名称。

通常,通常鼓励使用驼峰式大小写来记录方法或变量,因为它在可读性和维护脚本方面更加清晰。

2.减少,重用和回收

确保将您的方法分解到用户场景的最小块上非常重要。它们应涵盖简单和单一的流程。不要让您的方法与单一方法涵盖的多个功能过于复杂。例如,登录功能需要在应用程序上注册用户。将您的注册功能保留在另一个方法中,如果需要,请在登录方法中调用该方法。降低方法的复杂度可简化代码的可维护性。

另外,在需要的地方重复使用您的方法,请勿将相同的代码复制粘贴到不同的方法中。这导致代码中不必要的重复和冗余。增加代码行并不意味着您已经编写了不错的代码。重构和优化代码是编写稳定,健壮和更好的自动化代码的关键。

回收也是编写更好的自动化代码的另一个有用技巧。我有经验丰富的人员可以自动化遗留系统,不倾向于在自动化框架中更改现有方法,而不会在现有功能发生变化时重写另一种方法。这只是使框架变得脆弱。每当流程改变时,总是要更新现有方法,尽管它有其自身的挑战,即新用户可能不知道该方法可能具有的依赖性,但是我认为我们应该始终以长远的眼光来看待问题,而不是实现那些较短的目标。 。

下面是一个示例,说明如何将登录代码简化为一小部分功能,并使用了另一种注册方法来简化整个过程。

@Testpublic void Register_User() throws InterruptedException{driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);driver.get("https://www.lambdatest.com/ ");driver.manage().window().maximize();WebElement link= driver.findElement(By.xpath("//a[text()='Free Sign Up']"));link.click();WebElement organization=driver.findElement(By.xpath("//input[@name='organization']"));organization.sendKeys("LambdaTest");WebElement first_name=driver.findElement(By.xpath("//input[@name='first_name']"));first_name.sendKeys("Test");WebElement last_name=driver.findElement(By.xpath("//input[@name='last_name']"));last_name.sendKeys("User");WebElement email=driver.findElement(By.xpath("//input[@name='email']"));email.sendKeys("sadhvi.singh@navyuginfo.com");WebElement password=driver.findElement(By.xpath("//input[@name='password']"));password.sendKeys("TestUser123");WebElement phone_number=driver.findElement(By.xpath("//input[@name='phone']"));phone_number.sendKeys("9412262090");WebElement button=driver.findElement(By.xpath("//button[text()='SIGN UP']"));button.click();}	@Testpublic void Login_User(){driver.get("https://accounts.lambdatest.com/login");driver.findElement(By.xpath("//input[@name='email']")).sendKeys("User2@gmail.com");driver.findElement(By.xpath("//input[@name='password']")).sendKeys("TestUser123");driver.findElement(By.xpath("//button[@class='sign-up-btn']")).click();}@AfterClasspublic static void BrowserClose(){driver.quit();}}

3.合理地组织测试

好的,这确实是确保更好的自动化代码的主要可操作见解之一。它不仅易于理解,而且在维护上无需花费太多精力。从长远来看,借助框架来构建测试可以增加工作价值,并减少维护工作。您可以通过使用由JUnit和TestNG之类的框架提供的注释来控制应用程序的流程。例如,使用@BeforeClass之类的注释可以帮助您指导耗时的活动,例如连接到数据库,设置浏览器等与此方法相关的代码以及与此相关联的@BeforeClass注释。这可以帮助自动化测试仪立即知道该方法的确切功能以及何时调用该方法。试想一下,您的设置过程很清楚,并且已从代码的其他部分中整理出来。

下面的示例突出显示了通过TestNG框架展示了一种更好的结构化方法:

import static org.junit.Assert.*;import java.util.concurrent.TimeUnit;import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;public class Lamdatest {static WebDriver driver;@BeforeClasspublic static void BrowserOpen(){System.setProperty("webdriver.chrome.driver", "chromepath"); driver= new ChromeDriver() ;driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);}@Test(priority=1)public void Register_User() throws InterruptedException{driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);driver.get("https://www.lambdatest.com/ ");driver.manage().window().maximize();WebElement link= driver.findElement(By.xpath("//a[text()='Free Sign Up']"));link.click();WebElement organization=driver.findElement(By.xpath("//input[@name='organization']"));organization.sendKeys("LambdaTest");WebElement first_name=driver.findElement(By.xpath("//input[@name='first_name']"));first_name.sendKeys("Test");WebElement last_name=driver.findElement(By.xpath("//input[@name='last_name']"));last_name.sendKeys("User");WebElement email=driver.findElement(By.xpath("//input[@name='email']"));email.sendKeys("sadhvi.singh@navyuginfo.com");WebElement password=driver.findElement(By.xpath("//input[@name='password']"));password.sendKeys("TestUser123");WebElement phone_number=driver.findElement(By.xpath("//input[@name='phone']"));phone_number.sendKeys("9412262090");WebElement button=driver.findElement(By.xpath("//button[text()='SIGN UP']"));button.click();String url= driver.getCurrentUrl();assertEquals("fail- unable to register", url, "https://accounts.lambdatest.com/user/email-verification");}	@Test(dependsOnMethods="Register_User")	public void Login_User(){driver.get("https://accounts.lambdatest.com/login");driver.findElement(By.xpath("//input[@name='email']")).sendKeys("User2@gmail.com");driver.findElement(By.xpath("//input[@name='password']")).sendKeys("TestUser123");driver.findElement(By.xpath("//button[@class='sign-up-btn']")).click();}@AfterClasspublic static void BrowserClose(){driver.quit();}}

确定哪些注释应该与哪种测试方法相关联是很重要的。通过明确的依赖关系和优先级,可以根据应用程序的流程来构造测试和代码。

4.全面验证您的测试

作为质量检查人员,您要做的就是验证您的预期和实际满足情况,这与您的自动化代码相同。如果您的脚本不符合验证要求,那么创建一个脚本将毫无意义,也没有任何意义。理想情况下,每个用户操作都应该像测试用例步骤一样进行验证,无论它是在验证元素的可见性,还是要记住版式提示,文本表示形式,页面重定向或任何形式的视觉验证,甚至是关于评估数据库的结果。

即使您的验证无法确定,也会显示失败消息,以便您可以找出问题所在。我们在验证代码方面犯的最大错误是从确保验证通过的角度编写。我们从未考虑过如果代码失败或未达到预期效果会发生什么,那么继续下去将需要什么。

如果您希望在验证失败后立即中断测试并跳至另一测试,则可以使用硬断言,而如果您希望在同一页面上验证多个检查,则可以选择软断言。决定完全使用哪个断言取决于用例。

以下是在登录页面上执行的断言示例。在此方法中,将创建一种方法,其中使用有效凭据登录用户,然后使用另一种方法确保用户不会使用无效凭据登录并显示错误消息。

//validate user able to login with valid credentials@Testpublic void Login_User() throws IOException{driver.get("https://accounts.lambdatest.com/login");driver.findElement(By.xpath("//input[@name='email']")).sendKeys("User2@gmail.com");driver.findElement(By.xpath("//input[@name='password']")).sendKeys("TetsUser123");driver.findElement(By.xpath("//button[@class='sign-up-btn']")).click();WebDriverWait wait= new WebDriverWait(driver, 15);wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//a[@class='user-profile dropdown-toggle']"))));String Current_url= driver.getCurrentUrl();Assert.assertEquals("https://accounts.lambdatest.com/user/email-verification", Current_url);System.out.println("user logged in sucesfully");driver.findElement(By.xpath("//a[@class='user-profile dropdown-toggle']")).click();driver.findElement(By.xpath("//a[contains(text(),'Logout')]")).click();}//validate user is unable to login with invalid credentials@Testpublic void Login_invalid_User() throws IOException{driver.get("https://accounts.lambdatest.com/login");driver.findElement(By.xpath("//input[@name='email']")).sendKeys("User21@gmail.com");driver.findElement(By.xpath("//input[@name='password']")).sendKeys("TestUser123");driver.findElement(By.xpath("//button[@class='sign-up-btn']")).click();WebDriverWait wait= new WebDriverWait(driver, 15);String str= driver.findElement(By.xpath("//p[@class='error-mass']")).getText();String Current_url= driver.getCurrentUrl();Assert.assertEquals("https://accounts.lambdatest.com/login", Current_url);System.out.println(str);}

覆盖多个验证检查的方法可能有所不同,或者您可以像我上面所做的那样为每个验证选择不同的方法,或者可以选择在try-catch块下的单个方法中进行所有验证。

5.sleep不能改善稳定性

我们倾向于相信的最大神话,尤其是当我们刚接触自动化领域时,是通过为脚本提供足够的等待量,必要或不必要的等待会导致脚本顺利执行。相反,它使脚本不稳定,并增加了总体执行时间。这种静态睡眠的主要问题是,我们不了解运行测试的机器的负载,因此可能导致超时。因此,应避免使用thread.sleep来维护更好的自动化代码。对脚本使用等待的一种更好的方法是通过条件绑定,其中脚本可以像人类一样等待直到满足特定条件。例如,等待直到某个元素可见或不可见。

作为开发更好的自动化代码的一种选择,显式和流畅的等待更加适应。

6.进行测试,数据驱动

在对多种形式的数据进行测试时,测试变得更加有效,当编写更好的自动化代码以测试Web应用程序或任何其他软件时,测试也是如此。在自动化中,关键是通过多种形式的数据测试测试代码,而不是为每个数据编写不同的测试脚本。这可以通过数据驱动的测试框架轻松实现。它有助于将测试数据输入存储到外部数据库中,例如CSV文件,excel文件,文本文件,XML文件甚至是ODBC存储库。此数据被调用到脚本中,并一次又一次地运行在相同的测试代码中。与手动工作相比,这有助于减少冗余并加快执行速度。发现新的bug。这种方法的另一个好处是,它减少了您可能必须添加的测试脚本的数量,从而加快了测试周期。

与之保持同步,它还有助于简化脚本的可维护性。如果应用程序发生任何更改,代码中的所有硬编码值都可能会中断。实现此目的的一种更简单的方法是将所有硬编码组件设置为变量驱动。例如,通过将它们各自的值存储在excel工作表中并在脚本中调用它们,可以使所有定位器都不受代码限制。万一您的任何定位器损坏了,您只需要在excel中更改定位器的值即可,而根本不需要触摸脚本。

数据驱动测试的一个基本示例是:

		public void Login_User() throws IOException{File f1= new File("C://Users//navyug//Desktop//Test.xlsx");FileInputStream scr= new FileInputStream(f1);XSSFWorkbook book= new XSSFWorkbook(scr);XSSFSheet sheet=book.getSheetAt(0);for(int i=0; i<=sheet.getLastRowNum(); i++ ){//XSSFCell cell= sheet.getRow(i).getCell(1);Row row = sheet.getRow(i);Cell cell = row.getCell(0);driver.findElement(By.xpath("//input[@name='email']")).sendKeys(cell.toString());cell= row.getCell(1);driver.findElement(By.xpath("//input[@name='password']")).sendKeys(cell.toString());driver.findElement(By.xpath("//button[@class='sign-up-btn']")).click();WebDriverWait wait= new WebDriverWait(driver, 15);wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//a[@class='user-profile dropdown-toggle']"))));String Current_url= driver.getCurrentUrl();Assert.assertEquals("https://accounts.lambdatest.com/user/email-verification", Current_url);System.out.println("user logged in sucesfully");takescreenshot();driver.findElement(By.xpath("//a[@class='user-profile dropdown-toggle']")).click();driver.findElement(By.xpath("//a[contains(text(),'Logout')]")).click();}}

上面的代码显示了从Excel获取的用于不同登录凭据的数据。对于Xpath也可以扩展同样的功能,其中XPath值也可以从excel中提取。在这里,通过数据驱动方法解决的关键点是从我们的代码中删除硬编码的值,使其成为面向变量,并使其在多组输入中运行同一段代码。

7.不要错过报告!

如果自动化代码没有向您报告结果,则该代码将无法正常工作。为了优化您作为自动化工程师的工作,重要的是要知道哪些测试代码通过了,哪些失败并附带了屏幕截图。您可以向利益相关者展示的最佳投资回报是通过报告。共享这些详细的报告可提供可见性,并减少您验证测试执行脚本的时间。您可以通过TestNG HTML报告生成,JUnit报告生成等各种技术来实现报告,也可以使用扩展库来实现报告。

下面的代码显示了一个示例,其中登录功能的完成后已截取了屏幕截图作为验证通过的证明,而下面是执行后生成的TestNG报告的示例:

//validate user able to login with valid credentials@Testpublic void Login_User() throws IOException{driver.get("https://accounts.lambdatest.com/login");driver.findElement(By.xpath("//input[@name='email']")).sendKeys("User2@gmail.com");driver.findElement(By.xpath("//input[@name='password']")).sendKeys("TetsUser123");driver.findElement(By.xpath("//button[@class='sign-up-btn']")).click();WebDriverWait wait= new WebDriverWait(driver, 15);wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//a[@class='user-profile dropdown-toggle']"))));String Current_url= driver.getCurrentUrl();Assert.assertEquals("https://accounts.lambdatest.com/user/email-verification", Current_url);System.out.println("user logged in sucesfully");takescreenshot();driver.findElement(By.xpath("//a[@class='user-profile dropdown-toggle']")).click();driver.findElement(By.xpath("//a[contains(text(),'Logout')]")).click();}public void takescreenshot() throws IOException{TakesScreenshot scr= ((TakesScreenshot)driver);File file1= scr.getScreenshotAs(OutputType.FILE);FileUtils.copyFile(file1, new File("C:\\Users\\navyug\\Desktop\\Login_user.PNG")); }

如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以加软件测试交流:1085991341,还会有同行一起技术交流。

8.不要忘记跨浏览器测试!

如今,所有Web应用程序都支持多种浏览器和版本。重要的是,您的代码应针对多个浏览器,而不是针对特定的浏览器。在特定的浏览器上运行代码会失去应用程序的跨浏览器兼容性。执行跨浏览器测试,以确保您的应用程序在所有主要浏览器上都能提供无缝的用户体验,我们可以扩展此测试的自动化范围。诸如TestNG之类的框架有助于轻松地在各种浏览器中执行测试。

下面的代码显示了如何通过TestNG在多个浏览器上运行自动化代码

public class crowssbrowser {static WebDriver driver;@Parameters("browser")@BeforeClasspublic static void Browser_Select(String browser){if(browser.equalsIgnoreCase("firefox")) {System.setProperty("webdriver.firefox.marionette", "geckodriverpath");driver = new FirefoxDriver();// If browser is IE, then do this	  }else if (browser.equalsIgnoreCase("chrome")) { // Here I am setting up the path for my IEDriverSystem.setProperty("webdriver.chrome.driver", "chromedriverpath"); driver= new ChromeDriver() ;}driver.get("https://accounts.lambdatest.com/login");driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);}

XML代码:

<?xml ve
rsion="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"><suite name="Suite" parallel="none"><test name="FirefoxTest"><parameter name="browser" value="firefox" /><classes><class name="crowssbrowser" /></classes></test><test name="chrometest"><parameter name="browser" value="chrome" /><classes><class name="crowssbrowser" /></classes></test></suite>

上面的代码显示了一种以浏览器为参数的方法,其中设置了不同的浏览器驱动程序。使用TestNG XML文件,我们已将参数传递为不同的浏览器,在这些浏览器上将运行用于Firefox和chrome上的登录功能的代码。
以上内容就是本篇的全部内容以上内容希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 简书大佬的笔记:一篇文章带你详解 HTTP 协议(网络协议篇一)

    一篇文章带你详解 HTTP 协议(网络协议篇一)本篇文章篇幅比较长,先来个思维导图预览一下。一张图带你看完本篇文章一、概述1.计算机网络体系结构分层计算机网络体系结构分层2.TCP/IP 通信传输流利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用…...

    2024/4/24 12:05:57
  2. Spring 常见面试题

    1.Spring是什么? 答:Spring是一个轻量级的IoC和AOP容器框架,是为java应用程序提供基础性服务的一套框架,常见的配置方式有三种:基于XML配置,基于注解配置,基于java配置 主要由以下几个模块组成: Spring core:核心类库,提供IoC服务; Spring context:提供框架式的bea…...

    2024/4/27 14:39:23
  3. 公式顺序解析之加减乘除的执行顺序

    在上文:java根据Stack栈实现公式解析和自定义函数(二)的结尾有三个问题1. 加减乘除只支持两位2. 前缀的加减乘除还不支持3. 在末尾加减乘除会遇到数组下标越界的问题博主的思路已经有些混乱了,感觉不太对,所以我们先来把加减乘除的解析计算写一下,自己也捋捋思路,有经验…...

    2024/4/27 13:55:47
  4. allegro一键换层快捷命令设置

    allegro一键换层.txtallegro一键换层的快捷键设置,亲测好用,本人从网上找了N久才总结出来的,希望对各位攻城狮有所帮助,需要的自己下载吧立即下载allegro一键换层的快捷键设置,亲测好用,本人从网上找了N久才总结出来的,希望对各位攻城狮有所帮助,需要的自己下载吧...

    2024/4/27 14:16:36
  5. Python Pytest中使用的装饰器pytest.fixture

    最近在pytest中使用了很多装饰器觉得很好用,现在总结一下:pytest.fixture一、通过装饰器@pytest.fixture(),定义测试固件(test fixture)。实现setup_xxx的功能: import pytest # 函数名自定义 # 此时,login函数是一个测试固件,相对于实现了setup_xxx的功能。 @pytest.f…...

    2024/4/27 16:50:48
  6. PHP基本知识了解掌握 新手ctf 开源CMS 寻找EXP

    PHP概述PHP基本常识(了解)PHP基本语法(掌握)PHP网站框架指纹识别 PHP基本常识(了解)PHP定义 Personal Home Page Tools 原始定义 Hypertext Preprocessor 当前定义 超文本预处理器 是一种被广泛应用的开放源代码的多用途语言 PHP是服务器端脚本,返回的是HTML代码 与php…...

    2024/4/27 14:26:43
  7. Python虚拟环境搭建(Linux)

    1. 安装python3 sudo apt install python32. 安装pip3 sudo apt install python3-pip3. 安装virtualenv sudo -H pip3 install virtualenv3. 安装virtualenvwrapper sudo -H pip3 install virtualenvwrapper4. 配置virtualenvwrappervim ~/.bashrcexport WORKON_HOME=~/virenv…...

    2024/4/27 14:51:37
  8. JVM配置方法

    1、调优目的减少GC的频率和Full GC的次数2、调优方法使用jmap、mat等工具进行堆使用情况分析,内存等分析,通过调优参数重复分析使用情况,直到参数最优。3、工具的使用(1)jmap观察运行中的jvm物理内存的占用情况。参数如下:-heap :打印jvm heap的情况,会列出堆的总体使用情…...

    2024/4/27 15:08:46
  9. Java之jdbc

    ...

    2024/4/30 5:15:52
  10. leetcode46:

    描述:给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。来源:力扣(LeetCode) 链接:https://le…...

    2024/4/27 14:20:32
  11. 二级目录安序号文件重命名

    # coding = utf-8 import osdef rename(path):i = 0该文件夹下所有的文件(包括文件夹)FileList = os.listdir(path)遍历所有文件for files in FileList:原来的文件路径oldDirPath = os.path.join(path, files)如果是文件夹则递归调用if os.path.isdir(oldDirPath):rename(old…...

    2024/4/27 16:41:20
  12. GitBook部署与编写使用

    记录下gitbook文章目录介绍部署安装Node.js安装gitbook使用配置说明插件配置GitBook Editor编写创建文件夹或目录编写目录git push/pull 介绍 GitBook是一个基于Node.js的命令行工具,可使用Git和Markdown来编写文档。 总结几点:多人协作管理文档 文件服务 book发布 markdown编…...

    2024/4/27 15:55:00
  13. Vue-Cli3实现rem适配,2020有效

    Vue-Cli3实现rem适配 1.在Vue可视化面板的依赖中下载lib-flexible和pxtorem2.在入口文件main.js中:import ‘lib-flexible/flexible.js’ 3.在package.json内,在postcss内添加: "postcss": {"plugins": {"autoprefixer": {},"postcss-px…...

    2024/4/27 18:54:08
  14. 小程序瀑布流组件:支持翻页与图片懒加载

    电商小程序中,用到瀑布流的地方非常多,每次都写一个瀑布流,重复一次逻辑,作为程序员,肯定是非常不愿意的。 瀑布流的形式都是大同小异,不同的是瀑布流中每个模块的内容,随业务而变化。 所以,我们把瀑布流框架抽象成组件,瀑布流的内容由业务确定。这样即可实现组件化和…...

    2024/4/27 15:15:43
  15. 显示器有像电流波纹

    1、这种通常都是换VGA线,就能解决,已经遇到过3-4台电脑出现这种问题了 2、VGA线也是能出现故障,这种故障不是说线不通,就是存在老化吧可能...

    2024/4/27 18:35:18
  16. nginx基础及应用

    Nginx基础一、Nginx:原叫engine X, 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP反向代理服务器。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。 nginx的模块化设计使…...

    2024/4/27 19:45:12
  17. 报错:ERROR: Your project path contains non-ASCII characters.

    报错:ERROR: Your project path contains non-ASCII characters. This will most likely cause the build to fail on Windows. Please move your project to a different directory. See http://b.android.com/95744 for details. This warning can be disabled by adding th…...

    2024/4/27 15:34:26
  18. Windows环境JDK安装

    oracle官网下载相应的JDK版本:https://www.oracle.com/java/technologies/javase-downloads.html注意你如果只是跑程序只下载JRE就行,但是大部分人是开发使用的,那就需要下载JDK,JDK是包含JRE的,JDK包下载好之后,直接安装即可,放默认的C盘就行。记住安装路径(我的默认是…...

    2024/4/27 18:48:53
  19. 炸裂函数的使用

    explode(col)lateral view业务场景:一个工单被多个处理人处理过,那么这个工单会被算作每个人处理过的工单,进行每个人处理的工单量的topN时候,将处理人炸裂然后按人分组统计...

    2024/4/27 13:42:25
  20. 去除对象内的空键值对

    js去除对象中的空键值对let data = {name:zky,age:22,sex:男,face:}for (const key in data) { // 去除对象内多余的空值keyif (data[key] === ) {delete data[key]}}for in 或者for of forEach的方法看这https://blog.csdn.net/qq_46124502/article/details/1064…...

    2024/4/27 14:54:49

最新文章

  1. element_Plus中表格和分页的使用

    HTML 表格&#xff08;:data"filterData"绑定的数据&#xff09; <el-table ref"multipleTableRef" :data"filterData" style"width: 100%"selection-change"handleSelectionChange"><el-table-column type"…...

    2024/5/1 8:46:32
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. CTK插件框架学习-事件监听(04)

    CTK插件框架学习-插件注册调用(03)https://mp.csdn.net/mp_blog/creation/editor/136989802 一、主要流程 发送者注册消息事件接收者订阅消息事件接收者相应消息事件 事件监听比插件接口调用耦合性更弱&#xff0c;事件由框架维护&#xff0c;不需要指定发送方和接收方 二、…...

    2024/4/30 10:22:40
  4. 面向C#初学者的JSON入门与实践

    本篇为21天速通C#专栏最后一篇&#xff0c;前面的已经基本囊括C#基础所有内容&#xff0c;JOSN对C#来说&#xff0c;可能有些人认为不是很重要,但可以不精通,不能不知道,本篇仅做入门讲解和实践,对C#有兴趣可以订阅专栏,从C#简介开始添加链接描述可以说是零基础入门。 引言 J…...

    2024/4/30 9:21:41
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/29 23:16:47
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57