当前位置: 首页 > news >正文

大淘客网站怎么做/站长之家seo信息

大淘客网站怎么做,站长之家seo信息,wordpress meta 导出,郑州市建设网官网目录 1. 什么是自动化 2.自动化测试的分类 3. selenium(web 自动化测试工具) 1)选择 selenium 的原因 2)环境部署 3)什么是驱动? 4. 一个简单的自动化例子 5.selenium 常用方法 5.1 查找页面元素&…

目录

1. 什么是自动化

2.自动化测试的分类

3. selenium(web 自动化测试工具)

1)选择 selenium 的原因

2)环境部署

3)什么是驱动?

4. 一个简单的自动化例子

5.selenium 常用方法

5.1 查找页面元素(findElement())

5.2 findElements()方法

5.3 元素的定位 By 类

5.4 xpath 路径语言

6.常见的元素操作

6.1 输入文本(sendKeys())

6.2 点击 click

6.3 提交 submit(通过回车键提交)

6.4 清除 clear

6.5 获取文本 (getText())

6.6 获取属性对应的值 getAttribute

6.7 获取页面的标题和 URL

7.窗口

7.1 窗口的大小设置(manage().window())

7.2 窗口的切换

8. 屏幕截图 getScreenshotAs 

9.等待

9.1 强制等待

9.2 隐式等待

9.3 显示等待

10.2 浏览器导航

11. 弹窗

 12.选择框 select

13.执行脚本 executeScript()

14.文件上传

15. 浏览器的参数设置 ChromeOptions


谷歌浏览器升级到111版本之后,Java版本的selenium和Chrome不兼容

所以更换浏览器和驱动,使用edge浏览器和edge驱动,因为本篇是在 chrome 浏览器 111 版本之前写的,所以在看到创建 ChromeDriver driver = new ChromeDriver(); 驱动对象的操作,请将这段代码替换为

EdgeOptions options = new EdgeOptions();
options.addArguments("-remote-allow-origins=*");
EdgeDriver driver = new EdgeDriver(options)
  • EdgeOptions 是用于设置 Edge 浏览器的选项的类;
  • options.addArguments("-remote-allow-origins=*") 是设置 Edge 浏览器允许跨域请求的选项,即允许 WebDriver 与浏览器在不同的域之间通信。
  • 如果不使用 EdgeOptions 对象来设置,就无法实现这个功能。而 ChromeDriver 则没有类似的选项需要设置,所以可以直接使用 ChromeDriver driver = new ChromeDriver() 来创建驱动对象但因为版本不兼容就不用 chrome 了。

我本人使用的是chrome的Version 103.0.5060.134 (Official Build) (64-bit)

1. 什么是自动化

作用:通过自动化测试有效减少人力的投入,同时提高了测试的质量和效率

概念:自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。

比如,回归测试版本越来越多,版本回归的压力越来越大,仅通过人工测试来回归所有的版本肯定是不现实的,所以我们需要借助自动化测试。

2.自动化测试的分类

  1. 接口自动化测试
  2. UI自动化测试(界面测试)
  3. 移动端自动化测试
  4. web 端自动化测试

3. selenium(web 自动化测试工具)

1)选择 selenium 的原因

  1. 开源免费
  2. 支持多浏览器(Chrome,FireFox,IE浏览器等)
  3. 支持多系统(Linux,Windows,MacOS等等)
  4. 支持多语言(Java,Python,Ruby,JavaScript,Kotlin等等)
  5. selenium 包提供了很多可供选择的API

2)环境部署

如果想要使用 selenium 实施 Web 自动化测试,需要的环境是什么:

Edg浏览器、edg驱动(EdgeDriver)、selenium 工具包

3)什么是驱动?

人工测试的情况下,人来手动的打开浏览器,那么驱动就是人力

对自动化来说,代码不能够直接打开浏览器,需要借助驱动程序才能打开浏览器

selenium 编写的自动化脚本是如何打开浏览器(selenium Driver 浏览器三者之间的关系)

驱动要接受 selenium 脚本发送过来的 http 请求并解析 

4. 一个简单的自动化例子

首先先导入 selenium 包

<dependencies><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.0.0</version></dependency>
</dependencies>

简单自动化示例主要包含五个步骤:

  1. 创建驱动实例,创建会话(实例化 ChromeDriver 对象)
  2. 访问网站(对象.get(“网站”)
  3. 查找元素(对象.findElement(By.cssSelector(“#网址元素id”)).sendKeys(“输入内容”)
  4. 操作元素(对象.findElement(By.cssSelector(“#网址元素id”)).click()
  5. 结束会话(对象.quit()
package com.autotest0113;import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;import java.util.List;public class FirstAutotest {// 在百度网址搜索关键词 “胡歌”public void yifei() throws InterruptedException {// 1.打开浏览器ChromeDriver chromeDriver = new ChromeDriver();Thread.sleep(3000);// 2.在浏览器里输入百度网址,访问百度首页chromeDriver.get("https://www.baidu.com");Thread.sleep(3000);// 3.找到百度首页输入框元素,并输入关键词 “胡歌”chromeDriver.findElement(By.cssSelector("#kw")).sendKeys("刘亦菲");Thread.sleep(3000);// 4.找到百度首页 “百度一下” 按钮,并点击一下chromeDriver.findElement(By.cssSelector("#su")).click();Thread.sleep(3000);// 5.结束会话(关闭浏览器)chromeDriver.quit();}
}
package com.autotest0113;import sun.text.normalizer.CharTrie;public class RunAutoTest {public static void main(String[] args) throws InterruptedException {FirstAutotest firstAutotest = new FirstAutotest();firstAutotest.huge();}
}

5.selenium 常用方法

5.1 查找页面元素(findElement())

参数:By类(提供通过什么方式来查找元素)

返回值:webElement

当元素可以在页面中被正常查找,程序正常退出

当元素不能在页面中被正常查找,程序执行报错

5.2 findElements()方法

参数:By 类(提供通过什么方式来查找元素)

返回值:List<webElement>

public void methodTest() {ChromeDriver driver = new ChromeDriver();driver.get("https://www.baidu.com");driver.findElement(By.cssSelector("#kw"));List<WebElement> elements= driver.findElements(By.className("hotsearch-item"));for (WebElement element : elements) {System.out.println(element.getText());}driver.findElement(By.cssSelector("#su"));driver.quit();
}

5.3 元素的定位 By 类

5.4 xpath 路径语言

语法:

  • 层级:/子级 // 跳级
  • 属性:@
  • 函数:contains()....

自动化里要求元素的定位必须要唯一,但是手动在页面复制 selector 或者 path 元素不一定是唯一的,需要我们进行手动修改到唯一

6.常见的元素操作

6.1 输入文本(sendKeys())

sendKeys,仅适用于文本字段和内容可编辑的元素

driver.get("https://www.baidu.com");WebElement element = driver.findElement(By.cssSelector("#kw"));element.sendKeys("豆腐乾净搞方规");
//        driver.findElement(By.cssSelector("#kw")).sendKeys("豆腐乾净搞方规");driver.quit();

6.2 点击 click

        driver.findElement(By.cssSelector("#su")).click();

6.3 提交 submit(通过回车键提交)

submit 仅适用于表单元素,selenium 官方不推荐使用 submit,更推荐 click

        driver.findElement(By.cssSelector("#kw")).sendKeys("豆腐乾净搞方规");driver.findElement(By.cssSelector("#su")).submit();Thread.sleep(2000);driver.quit();

6.4 清除 clear

clear:适用于频繁测试输入是否可以重复输入

// 清除输入框的内容
driver.findElement(By.cssSelector("#kw")).clear();

6.5 获取文本 (getText())

// 获取文本
String text = driver.findElement(By.cssSelector("#s-top-left > div > a")).getText();
System.out.println("获取到的文本:" + text);

6.6 获取属性对应的值 getAttribute

// 获取属性的值String buttonText = driver.findElement(By.cssSelector("#su")).getAttribute("type");System.out.println("获取到的属性名:" + buttonText);String buttonText1 = driver.findElement(By.cssSelector("#su")).getAttribute("id");System.out.println("获取到的属性名:" + buttonText1);String buttonText2 = driver.findElement(By.cssSelector("#su")).getAttribute("value");System.out.println("获取到的属性名:" + buttonText2);

6.7 获取页面的标题和 URL

System.out.println(driver.getTitle());
System.out.println(driver.getCurrentUrl());
driver.findElement(By.cssSelector("#kw")).sendKeys("你好");
driver.findElement(By.cssSelector("#su")).click();
System.out.println(driver.getTitle());
System.out.println(driver.getCurrentUrl());

7.窗口

7.1 窗口的大小设置(manage().window())

最大化,最小化,全屏窗口,手动设置窗口大小

public void windowConTrol() throws InterruptedException {Thread.sleep(3000);// 窗口最大化driver.manage().window().maximize();Thread.sleep(3000);// 窗口最小化driver.manage().window().minimize();Thread.sleep(3000);// 全屏driver.manage().window().fullscreen();Thread.sleep(3000);// 手动设置窗口大小driver.manage().window().setSize(new Dimension(1024,768));Thread.sleep(2000);driver.quit();
}

7.2 窗口的切换

打开百度首页,点击图片超链接进入到百度图片首页,获取百度图片页面的 “百度一下” 按钮,正常步骤是会报错的

 // 窗口切换driver.get("https://www.baidu.com");driver.findElement(By.cssSelector("#s-top-left > a:nth-child(6)")).click();Thread.sleep(3000);driver.findElement(By.cssSelector("#homeSearchForm > span.s_btn_wr > input"));driver.quit();

这是因为虽然我们超过到了百度图片页面,但是当浏览器每次打开一个标签页的时候,会自动的给每个标签页进行标识,这个叫做句柄

可以通过 getWindowHandles() 获取所有标签页的句柄 Set,然后再通过getWindowHandle() 获取当前页面的句柄,然后遍历所有标签页的句柄,如果当前页的句柄和遍历 Set 中的句柄不同,就通过 switchTo().window() 方法进行窗口切换

    public void windowConTrol() throws InterruptedException, IOException {driver.get("https://www.baidu.com");driver.findElement(By.cssSelector("#s-top-left > a:nth-child(6)")).click();Thread.sleep(3000);// 获取当前页面的句柄String curHandle = driver.getWindowHandle();System.out.println("当前页面的句柄:" + curHandle);// 获取所有标签的句柄Set<String> handles =  driver.getWindowHandles();for (String handle : handles) {if(handle != curHandle) {driver.switchTo().window(handle);}}driver.findElement(By.cssSelector("#homeSearchForm > span.s_btn_wr > input"));Thread.sleep(3000);driver.quit();}

但是当我们打开了好几个窗口,应该怎么切换?

自动化基本没有这样的场景,因为当页面多了不会使用这样的页面跳转了,而是直接去访问要测试的页面,所以这里不用考虑太多

8. 屏幕截图 getScreenshotAs 

添加 Maven

    <!-- 保存屏幕截图文件需要用到的包--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>

需要注意的一点是,当代码执行到查找结果页面元素的时候,页面还没有加载完全,此时程序执行的速度是比,页面渲染的速度更快的,所以要注意在代码中添加等待机制,让页面先渲染一下,再截图。

        driver.get("https://www.baidu.com");driver.findElement(By.cssSelector("#kw")).sendKeys("刘亦菲");driver.findElement(By.cssSelector("#su")).click();Thread.sleep(3000);// 屏幕截图(保存现场)File srcfile = driver.getScreenshotAs(OutputType.FILE);// 把屏幕截图好的文件放到指定当前项目的路径下String filename = "cur.png";FileUtils.copyFile(srcfile,new File(filename));driver.findElement(By.cssSelector("#\\31  > div > div > div > div > div > div.cos-row.row-text_Johh7.row_5y9Az > div > div.title-wrapper_XLSiK > a > div > p > span > span"));driver.quit();

9.等待

  • 强制等待
  • 隐式等待
  • 显示等待
  • 流畅等待

需要注意:显示等待、隐式等待,不能同时使用,同时使用可能会出现意想不到的等待结果

9.1 强制等待

程序阻塞进行:Thread.sleep()

这个就会使 程序阻塞进行,这种方式在自动化测试中会用到,但用的不是特别多,这是因为

每一个自动化方法就是一个自动化测试用例,比如一个用例需要 10s,100测试用例 1000s,200个用例 2000s,这样耗费时间太多了,只能接受十几秒或几分钟内

9.2 隐式等待

隐式等待会作用与 driver 的整个生命周期,隐式等待会一直轮询判断元素算法存在,如果不存在就等待设置好的时间不断的进行轮询,直到元素被找到,在这里设置的是 3s ,在这三秒钟会一直询问是否完成当前行的代码的要求,也就是说每行代码在超过三秒未被执行完全就报错

public class autoTest {public void waitContro() {ChromeOptions options = new ChromeOptions();// 添加隐式等待driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.get("https://www.baidu.com");driver.findElement(By.cssSelector("#kw")).sendKeys("刘亦菲");driver.findElement(By.cssSelector("#su")).click();driver.findElement(By.cssSelector("#content_left"));driver.quit();}
}

9.3 显示等待

显示等待会等到设置的命令再进行等待

public class autoTest {public void webDriverWait(){ChromeOptions options = new ChromeOptions();driver.get("https://www.baidu.com");driver.findElement(By.cssSelector("#kw")).sendKeys("刘亦菲");driver.findElement(By.cssSelector("#su")).click();// 添加显示等待new WebDriverWait(driver,Duration.ofSeconds(5)).until(driver->driver.findElement(By.cssSelector("#content_left")));driver.quit();}
}

10.2 浏览器导航

浏览器的前进(forward)、后退(back)、刷新(refresh)

public void navigateControl() throws InterruptedException {ChromeOptions options = new ChromeOptions();
//        driver.get("https:///www.baidu.com");driver.navigate().to("https://www.baidu.com");Thread.sleep(3000);// 想要回退到访问百度网址之前的状态driver.navigate().back();Thread.sleep(3000);// 前进,再次进入到百度首页driver.navigate().forward();Thread.sleep(3000);// 刷新一下页面driver.navigate().refresh();Thread.sleep(3000);driver.quit();}

11. 弹窗

弹窗的类型:

  • 警告弹窗
  • 确认弹窗
  • 提示弹窗

 

 处理弹窗的步骤:

  1. 将 driver 作用到弹窗上(切换到弹窗)driver.switchTo.alert()
  2. 选择确认 accept() / 取消 dismiss()(提示弹窗输入文本 sendkeys )
  • 虽然警告弹窗只有确认按钮,但 accept 和 dismiss 都能处理
  • 虽然警告弹窗和确认弹窗都没有输入文本的地方,但如果要执行 alert.sendKeys 代码,也是不会报错的
    public void AlertControl() throws InterruptedException {driver.get("file:///D:/%E6%8F%90%E7%A4%BA%E5%BC%B9%E7%AA%97.html");Thread.sleep(3000);driver.findElement(By.cssSelector("body > input[type=button]")).click();//找到选择框元素Thread.sleep(3000);// 切换到弹窗进行弹窗处理Alert alert = driver.switchTo().alert();//创建选择框对象Thread.sleep(3000);// 1. 输入alert.sendKeys("666");Thread.sleep(3000);// 2. 点击确认alert.accept();Thread.sleep(3000);// 取消alert.dismiss();driver .quit();}

 12.选择框 select

选择框的选择方式:

  • 根据文本来选择
  • 根据属性值来选择
  • 根据序号来选择

    public void selectControl() throws InterruptedException {driver.get("file:///D:/%E9%80%89%E6%8B%A9%E6%A1%86.html");WebElement element = driver.findElement(By.cssSelector("Mathnumber"));Thread.sleep(3000);// 1.创建选择框对象Select select = new Select(element);Thread.sleep(3000);//1)根据文本来选择
//        select.selectByVisibleText("123");
//        //2)根据属性值来选择
//        select.selectByValue("234");
//        //3)根据序号来选择
//        select.selectByIndex(2);Thread.sleep(3000);driver.quit();}

13.执行脚本 executeScript()

executeScript(参数:JS)

    void scriptControl() throws InterruptedException {driver.get("https://image.baidu.com/");Thread.sleep(3000);// 执行js命令,让页面置底
//        driver.executeScript("document.documentElement.scrollTop=500");
//        Thread.sleep(3000);
//        // 执行js命令,让页面置顶,0 就是顶部
//        driver.executeScript("document.documentElement.scrollTop=0");
//        Thread.sleep(3000);driver.executeScript("var ss = document.querySelector(\"#kw\");ss.value = '刘亦菲';");//通过js代码来实现搜索Thread.sleep(3000);driver.quit();}

14.文件上传

sendKeys("文件路径+文件")

    void fileUploadControll() throws InterruptedException {driver.get("file:///D:/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0.html");driver.findElement(By.cssSelector("#avatar")).sendKeys("D:\\Desktop\\CSDN封面图片\\u=1008366999,1348072899&fm=253&fmt=auto&app=120&f=JPEG.webp");Thread.sleep(3000);driver.quit();}

15. 浏览器的参数设置 ChromeOptions

无头模式:在实际工作中,测试人员将自动化部署在机器上自动的执行,测试人员看不到测试过程,而是直接查看自动化执行的结果

有头模式:就是程序在自动的测试,我们是可以看到执行测试的过程界面

浏览器的参数设置需要在创建浏览器对象之前

    void paramsControl(){// 百度搜索刘亦菲// 先创建选项对象,然后再设置浏览器参数ChromeOptions options = new ChromeOptions();options.addArguments("-headless");
//        options.addArguments("--remote-allow-origins=*");ChromeDriver driver = new ChromeDriver(options);driver.get("https://image.baidu.com/");driver.executeScript("var ss = document.querySelector(\"#kw\");ss.value = '刘亦菲';");}

相关文章:

详解自动化测试之 Selenium

目录 1. 什么是自动化 2.自动化测试的分类 3. selenium&#xff08;web 自动化测试工具&#xff09; 1&#xff09;选择 selenium 的原因 2&#xff09;环境部署 3&#xff09;什么是驱动&#xff1f; 4. 一个简单的自动化例子 5.selenium 常用方法 5.1 查找页面元素&…...

vue监听对象属性值变化

一、官方文档 二、实现方法 方法一、直接根据watch来监听 export default {data() {return {object: {username: ,password: }}},watch: {object.username(newVal, oldVal) {console.log(newVal, oldVal)}} }方法二&#xff1a;利用watch和computed来实现监听 利用computed定…...

Unicode编码的emoji表情如何在前端页面展示(未完成)

Unicode编码的emoji表情如何在前端页面展示 一、首先几个定义解决办法 一、首先几个定义 U1F601 和 0x1F601 表示同一个 Unicode 代码点&#xff0c;即笑脸 Emoji 的代码点。它们之间的区别在于表示方式和数据类型。 1.U1F601 是一种常见的表示方式&#xff0c;也称为 “U” 标…...

基于SSM的设备配件管理和设备检修系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…...

鸿蒙开发|鸿蒙系统项目开发前的准备工作

文章目录 鸿蒙项目开发的基本流程介绍鸿蒙项目开发和其他项目有什么不同成为华为开发者-注册和实名认证1.登录官方网站 鸿蒙项目开发的基本流程介绍 直接上图&#xff0c;简单易懂&#xff01; 整个项目的开发通过4个模块进行&#xff1a;开发准备、开发应用、运行调试测试和发…...

Evil靶场

Evil 1.主机发现 使用命令探测存活主机&#xff0c;80.139是kali的地址&#xff0c;所以靶机地址就是80.134 fping -gaq 192.168.80.0/242.端口扫描 开放80&#xff0c;22端口 nmap -Pn -sV -p- -A 192.168.80.1343.信息收集 访问web界面 路径扫描 gobuster dir -u http…...

第77题. 组合

原题链接&#xff1a;第77题. 组合 全代码&#xff1a; class Solution { private:vector<vector<int>> result; // 存放符合条件结果的集合vector<int> path; // 用来存放符合条件结果void backtracking(int n, int k, int startIndex) {if (path.size() …...

读书笔记:彼得·德鲁克《认识管理》第21章 企业与政府

一、章节内容概述 企业社会责任最重要的维度之一是政企关系。无论对于企业的顺利运作&#xff0c;还是对于政府的顺利运作&#xff0c;政企关系都至关重要。然而&#xff0c;重商主义典范和宪政主义典范这两种传统理论越来越不适应社会现实&#xff0c;越来越失效。虽然当前尚…...

C/C++疫情集中隔离 2021年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C疫情集中隔离 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C疫情集中隔离 2021年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 A同学12月初从国外回来&#xff0c;按照防疫要…...

052-第三代软件开发-系统监测

第三代软件开发-系统监测 文章目录 第三代软件开发-系统监测项目介绍系统监测 关键字&#xff1a; Qt、 Qml、 cpu、 内存、memory 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&#xff09;和 C 的强大功…...

向量矩阵范数pytorch

向量矩阵范数pytorch 矩阵按照某个维度求和&#xff08;dim就是shape数组的下标&#xff09;1. torch1.1 Tensors一些常用函数 一些安装问题cd进不去不去目录PyTorch里面_表示重写内容 在默认情况下&#xff0c;PyTorch会累积梯度&#xff0c;我们需要清除之前的值 范数是向量或…...

NVIDIA Jetson OTA升级

从 JetPack 4.4 开始,可以使用包管理工具升级到下一个 JetPack 版本。请按照以下步骤执行升级。 1,小版本升级 (如,从 JetPack 4.4 升级到 JetPack 4.4.1) 第一步: sudo apt update 第二步: apt list --upgradable 第三步: sudo apt upgrade更新完之后重新启动即可 …...

【算法】算法题-20231118

这里写目录标题 一、16.17. 连续数列二、合并两个有序数组&#xff08;力扣88&#xff09;三、存在重复元素&#xff08;217&#xff09;四、有效的字母异位词&#xff08;242&#xff09; 一、16.17. 连续数列 简单 给定一个整数数组&#xff0c;找出总和最大的连续数列&…...

某60区块链安全之整数溢出漏洞实战学习记录

区块链安全 文章目录 区块链安全整数溢出漏洞实战实验目的实验环境实验工具实验原理攻击过程分析合约源代码漏洞EXP利用 整数溢出漏洞实战 实验目的 学会使用python3的web3模块 学会以太坊整数溢出漏洞分析及利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理…...

图数据库Neo4J 中文分词查询及全文检索(建立全文索引)

Neo4j的全文索引是基于Lucene实现的&#xff0c;但是Lucene默认情况下只提供了基于英文的分词器&#xff0c;下篇文章我们在讨论中文分词器&#xff08;IK&#xff09;的引用&#xff0c;本篇默认基于英文分词来做。我们前边文章就举例说明过&#xff0c;比如我要搜索苹果公司&…...

element-china-area-data使用问题

使用CodeToText报错&#xff0c;下载的时候默认下载最新版本的&#xff0c; 稳定版本5.0.2版本才可以 npm install element-china-area-data5.0.2 -S...

248: vue+openlayers 以静态图片作为底图,并在上面绘制矢量多边形

第248个 点击查看专栏目录 本示例是演示如何在vue+openlayers项目中以静态图片作为底图,并在上面绘制矢量多边形。这里主要通过pixels的坐标作为投射,将静态图片作为底图,然后通过正常的方式在地图上显示多边形。注意的是左下角为[0,0]。 直接复制下面的 vue+openlayers源代…...

thinkphp6(TP6)访问控制器报404(Nginx)

起因&#xff1a; 安装thinphp6后&#xff0c;发现无法访问控制器&#xff0c;直接通过URL访问&#xff0c;就报错404。 错误原因&#xff1a; Nginx不支持URL的 PathInfo。 解决方法&#xff1a; 配置伪静态。 伪静态代码&#xff1a; location / {if (!-e $request_filen…...

腾讯云轻量应用服务器使用场景列举说明

腾讯云轻量应用服务器&#xff08;TencentCloud Lighthouse&#xff09;是新一代开箱即用、面向轻量应用场景的云服务器产品&#xff0c;轻量应用服务器可用于搭建中小型网站、Web应用、博客、论坛、小程序/小游戏、电商、云盘/图床、云端开发测试和学习环境等轻量级、中低负载…...

【漏洞复现】IP-guard WebServer 远程命令执行

漏洞描述 IP-guard是一款终端安全管理软件,旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。互联网上披露IP-guard WebServer远程命令执行漏洞情报。攻击者可利用该漏洞执行任意命令,获取服务器控制权限。 免责声明 技术文章仅供参考,任何个人和…...

23111704[含文档+PPT+源码等]计算机毕业设计springboot办公管理系统oa人力人事办公

文章目录 **软件开发环境及开发工具&#xff1a;****功能介绍&#xff1a;****实现&#xff1a;****代码片段&#xff1a;** 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 软件开发环境及开发工具&#xff1a; 前端技术&#xff1a;jsc…...

在Linux系统上检测GPU显存和使用情况

在Linux系统上&#xff0c;你可以使用一些命令行工具来检测GPU显存和使用情况。以下是一些常用的方法&#xff1a; 1. 使用nvidia-smi&#xff08;仅适用于NVIDIA GPU&#xff09; 如果你使用的是NVIDIA的显卡&#xff0c;你可以使用nvidia-smi命令来获取显卡信息&#xff0c…...

内网穿透 cpolar

通过 cpolar软件 可以获得一个临时域名&#xff0c;而这个临时域名是一个 公网ip 下载与安装 下载地址&#xff1a;https://dashboard.cpolar.com/get-started 安装过程中&#xff0c;一直下一步即可 验证 进入官网验证页面复制 authtoken打开 cmd 进入安装目录执行命令&#…...

ai剪辑矩阵系统源码+无人直播系统源码技术开发

开发AI剪辑矩阵系统和无人直播系统源码&#xff0c;需要以下步骤&#xff1a; 1. 市场调研&#xff1a;了解市场需求和竞品情况&#xff0c;明确系统的功能和特点。 2. 系统设计&#xff1a;设计系统的整体架构和功能模块&#xff0c;包括视频剪辑、直播推流、实时互动、数据分…...

2311rust,到38版本更新

1.35.0稳定版 此版本亮点是分别为Box<dyn FnOnce>,Box<dyn FnMut>和Box<dyn Fn>实现了FnOnce,FnMut和Fn闭包特征. 此外,现在可按不安全的函数指针转换闭包.现在也可无参调用dbg!. 为Box<dyn Fn*>实现Fn*装饰特征. 以前,如果要调用在盒子闭包中存储的…...

腾讯云4核8G服务器配置价格表,轻量和CVM标准型S5实例

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云…...

Android 屏幕适配

目录 一、为什么要适配 二、几个重要的概念 2.1 屏幕尺寸 2.2 屏幕分辨率 2.3 屏幕像素密度 2.4 屏幕尺寸、分辨率、像素密度三者关系 三、常用单位 3.1 密度无关像素(dp) 3.2 独立比例像素&#xff08;sp&#xff09; 3.3 dp与px的转换 四、解决方案 4.1 今日头条…...

Python使用Mechanize库完成自动化爬虫程序

目录 引言 一、了解Mechanize库 二、安装Mechanize库 三、使用Mechanize库发送HTTP请求 四、使用Mechanize库解析HTML页面 五、使用Mechanize库模拟用户输入 六、使用Mechanize库处理JavaScript动态生成的内容 七、使用Mechanize库处理登录和表单提交的常见问题 总结 …...

【Shell脚本入门】

Shell中的特殊符号 1.$ 美元符号&#xff0c;用来表示变量的值。 如变量NAME的值为Mike&#xff0c;则使用$NAME就可以得到“Mike”这个值。2.# 井号&#xff0c;除了做为超级用户的提示符之外&#xff0c;还可以在脚本中做为注释的开头字母&#xff0c;每一行语句中&#xff…...

redis大全

redis-cli 常用命令 redis常用命令 redis数据结构 redis数据结构 redis持久化存储 持久化存储 redis事务 redis事务 redis管道 管道 redis7集群搭建 集群 redis常见问题以及解决方案 常见问题以及解决方案 redis面试题 面试题 redis高级案列case 高级case sp…...