文章目录

  • 云音乐系统评论模块介绍
  • 评论模块自动化测试的总体思路
  • 评论发表的测试点(测试需求)
  • 评论发表的第1个测试脚本
  • 评论发表的第2个测试脚本
  • 测试方法f1的调试日志
  • 测试方法f2的调试日志
  • 测试方法f3的调试日志
  • 参考资料

云音乐系统评论模块介绍

主要包括:评论发表,评论回复,评论点赞和取消点赞,评论删除,评论查看(精彩评论和最新评论)。

评论模块自动化测试的总体思路

1)设计评论发表的测试点
2)设计评论回复的测试点
3)设计评论点赞和取消点赞的测试点
4)设计删除评论的测试点
5)设计评论查看的测试点
6)设计评论发表的Selenium自动化脚本并调试
7)设计评论回复的Selenium自动化脚本并调试
8)设计评论点赞和取消点赞的Selenium自动化脚本并调试
9)设计评论删除的Selenium自动化脚本并调试
10)设计评论查看的Selenium自动化脚本并调试
11)创建TestNG测试集(将需要运行的测试脚本添加进来)
12)运行TestNG测试集

评论发表的测试点(测试需求)

1)输入的内容是合法的,发表评论成功
2)输入的内容包含表情,发表评论成功
3)输入的内容包含@{账号},发表评论成功
4)输入的内容包含换行符,发表评论成功
5)输入的内容为140个中文字符或者70个表情,发表评论成功
6)输入的内容为1个英文字母,发表评论成功
7)输入的内容包含HTML代码,发表评论成功
8)输入的内容包含JS代码,发表评论成功
9)输入的内容包含QQ号码,发表评论失败
10)输入的内容包含手机号码,发表评论失败
11)输入的内容包含特殊字符,发表评论失败
12)输入的内容过长,发表评论失败
13)输入的内容是空,发表评论失败
14)输入的内容是空格,发表评论失败
15)针对同一首歌,频繁评论会被系统拦截
16)输入的内容包含敏感词汇,发表评论失败
17)非登录状态,不能评论

评论发表的第1个测试脚本

代码如下:

package examples;import java.util.concurrent.*;
import org.openqa.selenium.*;
import org.openqa.selenium.ie.*;
import static org.testng.Assert.*;
import org.testng.annotations.*;public class MusicCloudTest {private WebDriver driver;  @DataProviderpublic Object[][] data1(){Object[][] arr = {{"非登录状态,发表评论失败","https://music.163.com/#/song?id=29099236",By.className("area"),By.className("n-log2"),"手机号登录"}};return arr;}@Test(dataProvider="data1")public void f1(String desc,String url,By by1,By by2,String expected) throws Exception{driver.get(url);//Thread.sleep(2000);driver.switchTo().frame(driver.findElement(By.xpath("//iframe[1]")));//点击评论选项driver.findElement(By.className("u-btni-cmmt")).sendKeys(Keys.ENTER);Thread.sleep(2000);//driver.findElement(by1).click();driver.switchTo().defaultContent();assertTrue(driver.findElement(by2).getText().contains(expected), desc);}@BeforeTestpublic void beforeTest() {//设置IE浏览器驱动的路径System.setProperty("webdriver.ie.driver", "d:\\drivers\\IEDriverServer.exe");//InternetExplorerOptions option = new InternetExplorerOptions();//option.requireWindowFocus();//driver = new InternetExplorerDriver(option);driver = new InternetExplorerDriver();//System.setProperty("webdriver.gecko.driver", "d:\\drivers\\geckodriver.exe");//driver = new FirefoxDriver();//设置默认的等待时长driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//最大化浏览器窗口//driver.manage().window().maximize();}@AfterTestpublic void afterTest() {driver.quit();}}

评论发表的第2个测试脚本

代码如下:

package examples;import static org.testng.Assert.*;
import java.util.*;
import java.util.concurrent.*;
import org.openqa.selenium.*;
import org.openqa.selenium.ie.*;
import org.testng.annotations.*;public class MusicCloudTest2 {private WebDriver driver;@DataProvider(parallel=false)public Object[][] data2() {Object[][] arr = { { "输入的内容是HTML代码", "https://music.163.com/#/song?id=22006167", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.id("g_iframe"), "<h1>好听,不錯哦</h1>", "评论成功" },               { "输入的内容是JS代码", "https://music.163.com/#/song?id=22006168", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.id("g_iframe"), "<script>alert('好听,不錯哦')</script>", "评论成功" },                    { "输入的内容是合法的", "https://music.163.com/#/song?id=22006169", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.id("g_iframe"), "好听,不錯哦", "评论成功" },{ "输入的内容包含换行符", "https://music.163.com/#/song?id=22006170", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.id("g_iframe"), "好听,不錯哦!\n" + "好听,不錯哦!\n", "评论成功" },             { "输入的内容包含表情", "https://music.163.com/#/song?id=22006171", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.id("//g_iframe"), "[强][强][强]\n" + "好听,不錯哦!\n", "评论成功" },             { "输入的内容包含@{账号}", "https://music.163.com/#/song?id=22006172", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.id("g_iframe"), "@云音乐小秘书 厉害了\n" + "好听,不錯哦!\n", "评论成功" }};return arr;}@DataProvider(parallel=false)public Object[][] data3(){StringBuffer sb = new StringBuffer();for (int i = 0; i < 300; i++) {sb.append("1");}Object[][] arr = {{ "输入的内容是空,发表评论失败", "https://music.163.com/#/song?id=2697941", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.xpath("//iframe[1]"), "", "输入点内容再提交" },{ "输入的内容是空格,发表评论失败", "https://music.163.com/#/song?id=2697942", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.xpath("//iframe[1]"), "   ", "输入点内容再提交" },{ "输入的内容过长,发表评论失败", "https://music.163.com/#/song?id=2697943", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.xpath("//iframe[1]"), sb.toString(), "输入不能超过140个字符" },                  { "输入的内容包含特殊字符", "https://music.163.com/#/song?id=2697944", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.xpath("//iframe[1]"), "@好听,不錯哦!@#¥%&*<>\n';,{}[]=+" + "好听,不錯哦!\n", "评论成功" },                         { "输入的内容包含qq号码,发表评论失败", "https://music.163.com/#/song?id=2697945", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.xpath("//iframe[1]"), "发票,QQ876295854", "评论成功" }, { "输入的内容包含手机号码,发表评论失败", "https://music.163.com/#/song?id=2697946", By.className("area"), By.className("u-btn-1"), By.className("sysmsg"), By.xpath("//iframe[1]"), "发票,17721038951", "评论成功" } };return arr;}@Test(dataProvider = "data2",enabled = true)public void f2(String desc, String url, By by6, By by7, By by8, By by10, String content, String expected) throws Exception {  driver.get(url);Thread.sleep(2000);driver.switchTo().defaultContent();driver.switchTo().frame(driver.findElement(by10));List<WebElement> elements = driver.findElements(By.className("u-hd4"));int index = elements.size()-1;String comments_count = elements.get(index).getText();//最新评论数driver.findElement(By.className("u-btni-cmmt")).sendKeys(Keys.ENTER);// 点击评论选项Thread.sleep(2000);driver.findElement(by6).sendKeys(content);// 输入评论的内容driver.findElement(by7).sendKeys(Keys.ENTER);// 点击发布评论System.out.println(driver.findElement(by8).getText());assertTrue(driver.findElement(by8).getText().contains(expected), desc);Thread.sleep(2000);JavascriptExecutor exec = (JavascriptExecutor)driver;for(int i=0;i<2;i++){exec.executeScript("scrollBy(0, 600)");Thread.sleep(1000);}driver.navigate().refresh();Thread.sleep(3000);driver.switchTo().defaultContent();driver.switchTo().frame(driver.findElement(by10));elements = driver.findElements(By.className("u-hd4"));index = elements.size()-1;String comments_count2 = elements.get(index).getText();//最新评论数System.out.println(comments_count2);assertFalse(comments_count.equals(comments_count2));//验证最新评论数不同}@Test(dataProvider = "data3",enabled = false)public void f3(String desc, String url, By by6, By by7, By by8, By by10, String content, String expected) throws Exception {    driver.get(url);Thread.sleep(2000);driver.switchTo().defaultContent();driver.switchTo().frame(driver.findElement(by10));List<WebElement> elements = driver.findElements(By.className("u-hd4"));int index = elements.size()-1;String comments_count = elements.get(index).getText();//最新评论数System.out.println(comments_count);      driver.findElement(By.className("u-btni-cmmt")).sendKeys(Keys.ENTER);// 点击评论选项Thread.sleep(2000);driver.findElement(by6).sendKeys(content);// 输入评论的内容driver.findElement(by7).sendKeys(Keys.ENTER);// 点击发布评论System.out.println(driver.findElement(by8).getText());assertTrue(driver.findElement(by8).getText().contains(expected), desc);Thread.sleep(2000);driver.navigate().refresh();//String html = driver.getPageSource();//System.out.println(html);Thread.sleep(3000);driver.switchTo().defaultContent();driver.switchTo().frame(driver.findElement(by10));elements = driver.findElements(By.className("u-hd4"));index = elements.size()-1;String comments_count2 = elements.get(index).getText();//最新评论数System.out.println(comments_count2);assertEquals(comments_count,comments_count2);//验证最新评论数相同} @BeforeTestpublic void beforeTest() throws Exception {//设置IE浏览器驱动的路径System.setProperty("webdriver.ie.driver", "d:\\drivers\\IEDriverServer.exe");//InternetExplorerOptions option = new InternetExplorerOptions();//option.requireWindowFocus();//driver = new InternetExplorerDriver(option);driver = new InternetExplorerDriver();// System.setProperty("webdriver.gecko.driver", "d:\\drivers\\geckodriver.exe");// driver = new FirefoxDriver();// 设置默认的等待时长driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);// 最大化浏览器窗口//driver.manage().window().maximize();//driver.get("https://music.163.com/#/song?id=29099236");Thread.sleep(2000);Cookie cookie1 = new Cookie("__csrf","34ed4ebefedea32864da98eee22bd58e","/",null);Cookie cookie2 = new Cookie("_iuqxldmzr_","32","/",null);Cookie cookie3 = new Cookie("_ntes_nnid","38aa2dc919e012a7d362c821a50bd058,1557561654225","/",null);Cookie cookie4 = new Cookie("_ntes_nuid","38aa2dc919e012a7d362c821a50bd058","/",null);Cookie cookie5 = new Cookie("JSESSIONID-WYYY","RH4ks5ZW2bssEmGOra%2FOi9RSPP1tqu%2B0PVXdW7844odqRqhhWOq86%2BPjM%5C9B%2B4%2FaGkabwY1WSkS9qc%2BPaX%2Bzcuz4OvbdiaksPvVa%5CmyQ%5Cc6gZbU6DbTQ%5CzlpKszPNs2Os8wJTKY%2Bt%5C4d5qMWYGSynTVIOK%2FOTIKuVbqu9FpUhpASuyTO%3A1557563454191","/",null);Cookie cookie6 = new Cookie("MUSIC_U","37be2a4b6d5e9980fb1f2dbd1a6ec9291310cca37383d14a45a4abb344fa3c56218ec3f8668d838e40044f069169144741049cea1c6bb9b6","/",null);Cookie cookie7 = new Cookie("WM_TID","Eg7biYM%2BMTpAFEQFVQIsmMg36YXVSOwp","/",null);//Cookie cookie8 = new Cookie("WM_NI","9mKBslD3uMhXh39HIyhUbLjHnnQheFOBtrZr3GMdU%2FjlaH5KncNzqnZCoDHMv1lEw5cmBUTkhyZlloiRJYBO74uSTcooi8zdluJRd9ur8NshcJlrFYNvKGBjDDJrzuFWQ1A%3D","/",null);//Cookie cookie9 = new Cookie("WM_NIKE","9ca17ae2e6ffcda170e2e6eeaeb359a2eaac8af772ede78ab6c15b838b9aafb8638ba9a7d8d05d878ca089f72af0fea7c3b92afbb385a3f26888edbbaeeb54acedf7a9cc73ac8baeade944aeb29f89e84e8d9ebc93d97af1998385d825aab4afa9b841aebd829bf4669a9da1a5cb47b6efa4a6f63fa1b38eb6d761aca7968def65ab8e86bac145f5ecbbb4d769adb1a7d9f970b0ab86b3e733b7aef8aff264a196a493c5538eaa85a8c162889c8693f97f86899fd2c437e2a3","/",null);driver.manage().addCookie(cookie1);driver.manage().addCookie(cookie2);driver.manage().addCookie(cookie3);driver.manage().addCookie(cookie4);driver.manage().addCookie(cookie5);driver.manage().addCookie(cookie6);driver.manage().addCookie(cookie7);        //driver.manage().addCookie(cookie8);//driver.manage().addCookie(cookie9);}@AfterTestpublic void afterTest() {driver.quit();}}

测试方法f1的调试日志

日志如下:

[RemoteTestNG] detected TestNG version 6.14.3
Started InternetExplorerDriver server (32-bit)
3.6.0.0
Listening on port 26967
Only local connections are allowed
五月 11, 2019 5:57:57 下午 org.openqa.selenium.remote.ProtocolHandshake createSession
信息: Detected dialect: W3C
PASSED: f1("非登录状态,发表评论失败", "https://music.163.com/#/song?id=29099236", By.className: area, By.className: n-log2, "手机号登录")===============================================Default testTests run: 1, Failures: 0, Skips: 0
==============================================================================================
Default suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

测试方法f2的调试日志

日志如下:

[RemoteTestNG] detected TestNG version 6.14.3
Started InternetExplorerDriver server (32-bit)
3.6.0.0
Listening on port 37307
Only local connections are allowed
五月 11, 2019 5:48:26 下午 org.openqa.selenium.remote.ProtocolHandshake createSession
信息: Detected dialect: W3C
评论成功
最新评论(871)
评论成功
最新评论(6)
评论成功
最新评论(7)
评论成功
最新评论(20)
评论成功
最新评论(5)
PASSED: f2("输入的内容是HTML代码", "https://music.163.com/#/song?id=22006167", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.id: g_iframe, "<h1>好听,不錯哦</h1>", "评论成功")
PASSED: f2("输入的内容是JS代码", "https://music.163.com/#/song?id=22006168", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.id: g_iframe, "<script>alert('好听,不錯哦')</script>", "评论成功")
PASSED: f2("输入的内容是合法的", "https://music.163.com/#/song?id=22006169", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.id: g_iframe, "好听,不錯哦", "评论成功")
PASSED: f2("输入的内容包含换行符", "https://music.163.com/#/song?id=22006170", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.id: g_iframe, "好听,不錯哦!
好听,不錯哦!
", "评论成功")
PASSED: f2("输入的内容包含@{账号}", "https://music.163.com/#/song?id=22006172", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.id: g_iframe, "@云音乐小秘书 厉害了
好听,不錯哦!
", "评论成功")
FAILED: f2("输入的内容包含表情", "https://music.163.com/#/song?id=22006171", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.id: //g_iframe, "[强][强][强]
好听,不錯哦!
", "评论成功")
org.openqa.selenium.NoSuchElementException: Unable to find element with css selector == #\/\/g_iframe
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'DESKTOP-J11D8C6', ip: '192.168.1.7', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_191'
Driver info: org.openqa.selenium.ie.InternetExplorerDriver===============================================Default testTests run: 6, Failures: 1, Skips: 0
==============================================================================================
Default suite
Total tests run: 6, Failures: 1, Skips: 0
===============================================

测试方法f3的调试日志

日志如下:

[RemoteTestNG] detected TestNG version 6.14.3
Started InternetExplorerDriver server (32-bit)
3.6.0.0
Listening on port 28111
Only local connections are allowed
五月 11, 2019 5:16:38 下午 org.openqa.selenium.remote.ProtocolHandshake createSession
信息: Detected dialect: W3C
最新评论(3)
输入点内容再提交吧
最新评论(3)
最新评论(3)
输入点内容再提交吧
最新评论(3)
最新评论(2)
输入不能超过140个字符
最新评论(2)
最新评论(3)
评论成功
最新评论(3)
最新评论(2)
评论成功
最新评论(2)
最新评论(2)
评论成功
最新评论(2)
PASSED: f3("输入的内容是空,发表评论失败", "https://music.163.com/#/song?id=26979242", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.xpath: //iframe[1], "", "输入点内容再提交")
PASSED: f3("输入的内容是空格,发表评论失败", "https://music.163.com/#/song?id=26979243", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.xpath: //iframe[1], "   ", "输入点内容再提交")
PASSED: f3("输入的内容过长,发表评论失败", "https://music.163.com/#/song?id=26979244", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.xpath: //iframe[1], "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", "输入不能超过140个字符")
PASSED: f3("输入的内容包含特殊字符", "https://music.163.com/#/song?id=26979239", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.xpath: //iframe[1], "@好听,不錯哦!@#¥%&*<>
';,{}[]=+好听,不錯哦!
", "评论成功")
PASSED: f3("输入的内容包含qq号码,发表评论失败", "https://music.163.com/#/song?id=26979244", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.xpath: //iframe[1], "发票,QQ876295854", "评论成功")
PASSED: f3("输入的内容包含手机号码,发表评论失败", "https://music.163.com/#/song?id=26979244", By.className: area, By.className: u-btn-1, By.className: sysmsg, By.xpath: //iframe[1], "发票,17721038951", "评论成功")===============================================Default testTests run: 6, Failures: 0, Skips: 0
==============================================================================================
Default suite
Total tests run: 6, Failures: 0, Skips: 0
===============================================

参考资料

【参考】Selenium入门中文教程
https://www.yiibai.com/selenium
【参考】Selenium API文档
https://seleniumhq.github.io/selenium/docs/api/java/index.html?index-all.html
【参考】Selenium官方教程
https://www.seleniumhq.org/docs/03_webdriver.jsp
https://www.seleniumhq.org/docs/04_webdriver_advanced.jsp
【参考】xpath的语法
http://www.w3school.com.cn/xpath/xpath_syntax.asp
【参考】Selenium WebDriver问题–Internet Explorer保护模式设置问题
https://www.cnblogs.com/hushaojun/p/4449643.html
【参考】Selenium 调用IEDriverServer打开IE浏览器
https://www.cnblogs.com/misswjr/p/9453566.html
【参考】Selenium IE webdriver 常见的一些问题
https://www.jianshu.com/p/3ee5587ee364
【参考】python+selenium+IE11登陆页面click失效,submit()没有加密问题
https://blog.csdn.net/qq_16045253/article/details/85767410
【参考】selenium中为什么有些IE浏览器中输入英文和数字特别慢
https://blog.csdn.net/qew110123/article/details/85853374
【参考】解决selenium2在IE11上出错的问题,如Unable to get browser
https://blog.csdn.net/chengly0129/article/details/68482829
【参考】selenium操作cookie
https://www.cnblogs.com/moonpool/p/5676673.html
【参考】selenium鼠标键盘事件
https://www.cnblogs.com/sylvia-liu/p/4224409.html

微信扫一扫关注公众号

点击链接加入群聊

https://jq.qq.com/?_wv=1027&k=5eVEhfN
软件测试学习交流QQ群号:511619105

音乐网站评论功能自动化测试实践相关推荐

  1. 网站评论功能数据库设计和开发

    本文主要分享了我在设计评论模块中的一些心得,希望对读者有些许帮助. 需求分析 现阶段评论做的最好的我想应该是网易新闻(app)里面的评论模块了,其"盖楼"的方式让人印象深刻,评论已 ...

  2. ssm基于Html+css的音乐网站的设计与实现毕业设计源码181627

    ssm音乐网站 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势.互联网的优势和普及使得各种系统的开发成为必需. 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采SSM技 ...

  3. (附源码)ssm基于Html+css的音乐网站的设计与实现 毕业设计181627

    ssm音乐网站 摘要 随着社会的发展,社会的方方面面都在利用信息化时代的优势.互联网的优势和普及使得各种系统的开发成为必需. 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采SSM技术 ...

  4. 【计算机毕业设计】102音乐网站

    一.系统截图(需要演示视频可以私聊) 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟.本文介绍了音乐网站的开发全过程.通过分析音乐网站管理的不足,创建了一个计算 ...

  5. [个人网站搭建]·Django增加评论功能(Python3)

    [个人网站搭建]·Django增加评论功能 个人主页--> https://xiaosongshine.github.io/ 个人网站搭建github地址:https://github.com/ ...

  6. php开发添加表情功能,WordPress网站评论区如何实现添加表情包功能?

    做网站过程中,可以给自己的网站添加评论框,供用户评论.默认情况下,Wordpress网站评论框是没有添加表情功能的,那么WordPress网站评论区如何实现添加表情包功能?今天我们介绍一下如何给自己的 ...

  7. 视频网站开发:JavaWeb做一个带自定义小表情的评论功能

    前几天一直在做视频网站的评论功能,如今虽然说做的不是很好,但也算是挺满意的实现了.自我感觉做的最好的最有花样的就是为评论功能添加了小表情评论.见如下效果图 1.首先第一步,收集你想要使用的小表情,我因 ...

  8. quasar ssr网站 利用github(giscus) 实现评论功能

    前言:利用github(giscus) 白嫖评论功能 个人博客 作为一个小前端,全栈开发博客网站还是有一点点困难(主要是累),所以就想着能不能白嫖评论功能,在网络中游荡一番,由 GitHub Disc ...

  9. mysql仿网易评论_Android仿抖音评论列表(加评论功能)/网易云音乐列表

    老规矩 先上效果图 1542355190753.gif 附下Demo 如果想要实现抖音一样的评论功能,就要再列表dialog上面再弹出一个dialog. 那么问题来了:当评论的dialog弹出来的时候 ...

最新文章

  1. 1044 Shopping in Mars
  2. type lambda
  3. Java设计模式(十三):代理设计模式
  4. html元素和属性,HTML常用元素和属性(一)
  5. git git git
  6. c++ :MFC opencv使用namedWindow,imshow出现两个窗口
  7. 我的世界服务器端口文件夹,我的世界手机版服务器ip端口地址大全
  8. linux rcu机制,Linux RCU机制详解 (透彻)
  9. BAT经典面试题精简版(基础知识附答案)
  10. cookie/storage
  11. 因为不想「被绿」,美国年轻人只想和 iPhone 聊天
  12. Log4j介绍,log4j.properties配置详解
  13. 网络安全 Security+(SY0-601)学习笔记
  14. 25款有用的桌面版博客编辑器
  15. 2019 年中国互联网企业 100 强揭晓,你的公司排在第几位呢?
  16. 大学计算机信息技术实验与测试教程第2版,大学信息技术实验指导
  17. Chrome浏览器安装Axure插件教程
  18. python 循环语句s =2+22+222+2222之和_python基础2
  19. 社交鼻祖人人网被卖 曾意气风发比肩Facebook 一代人的回忆终结了
  20. 《数据库原理与运用》上机实验之SPJ

热门文章

  1. 在 Android 系统中直接调用 SO文件(包含System.loadLibrary加载so的路径解释)
  2. DirectUI框架GUIFW
  3. Python笔记-011-用户输入和while循环
  4. 图神经网络学习实践——Zachary’s karate club Problem
  5. stm32串口发送数据的配置,以及通过串口发送结构体数组总是多一个00字节的问题
  6. 爬取点评成都数据,只为告诉你哪家火锅最好吃
  7. 64位数值强制转换为32位
  8. 不一样的go语言-athens私仓安装
  9. CSS样式入门级教程
  10. MATLAB 制作抖音同款炫光海报