福建住房和城乡建设部网站首页,苏州网络平台公司,网站色彩搭配方案,影视logo免费设计前提 网络通信是当今社会最为普及和繁荣的技术之一#xff0c;其承载了人们生活中瞬息万变的信息传递和交流。而作为网络通信的核心要素#xff0c;网络协议、socket、cookie和session则是网络通信的灵魂。
一、网络协议 网络协议是计算机和网络设备之间相互通信的规则和标准…前提 网络通信是当今社会最为普及和繁荣的技术之一其承载了人们生活中瞬息万变的信息传递和交流。而作为网络通信的核心要素网络协议、socket、cookie和session则是网络通信的灵魂。
一、网络协议 网络协议是计算机和网络设备之间相互通信的规则和标准。 它规定了数据的传输方式、传输格式、传输速率和错误校验等内容。通常网络协议由多个层次构成每个层次负责不同的功能通过层与层之间的协作实现了数据的可靠传输和通信的顺畅进行。常见的网络协议包括TCP/IP协议、HTTP协议、FTP协议等等。
常见的网络协议有以下几种 TCP/IP协议TCP/IP协议是互联网最常用的协议它是一种分层协议体系由传输控制协议TCP和互联网协议IP两部分组成负责数据在因特网中的正确传输和路由选择。 HTTP协议HTTPHypertext Transfer Protocol协议是Web应用程序最常用的协议。它定义了Web浏览器和Web服务器之间交换的信息格式主要用于客户端发送请求和服务器传回响应。 FTP协议FTPFile Transfer Protocol协议是一种用于文件传输的协议。它为客户端和服务器之间的文件传输提供了标准格式和传输方式。 SMTP协议SMTPSimple Mail Transfer Protocol协议用于电子邮件的传输它定义了电子邮件传输的格式和规则。SMTP协议指定了邮件发送的服务器和接收的服务器通过建立连接来传输电子邮件。 DNS协议DNSDomain Name System协议是一种用于将域名转换为IP地址的协议。它通过在分布式数据库中搜索域名和IP地址的映射实现了域名到IP地址的转换。
二、Socket Socket是一种用于网络通信的编程接口。 它是在应用层和传输层之间的一个抽象层负责应用程序之间的数据传输。Socket可以实现不同操作系统及不同编程语言之间的互相通信并且可以通过不同的协议来进行数据传输。 在Socket编程中应用程序可以通过Socket向网络上的其他应用程序发送和接收数据。它使用一种类似于文件I/O操作的方式进行编程通过调用Socket API提供的函数来实现网络通信。想了解Socket编程可点击Socket通信编程与传输协议分析。 常见的Socket协议有TCP传输控制协议和UDP用户数据报协议。TCP是一种面向连接的协议通过三次握手建立连接保证数据传输的可靠性但在传输数据时可能会存在一定的延迟。UDP是一种无连接的协议可以快速传输数据但传输过程中数据的丢失或重复出现无法得到保证。 在网络编程中Socket被广泛应用于实现各种网络服务和应用程序例如HTTP服务器、FTP服务器、聊天软件等。Socket编程也是网络编程的核心技术之一。
三、Cookie Cookie通常称为“浏览器Cookie”或“HTTP Cookie”是一种存储在客户端浏览器中的小数据文件用于在客户端和服务器之间传递信息。它是Web浏览器和Web服务器之间数据交换的重要机制之一。 例如我们平常使用的网站会在我们登录时使用Cookie来记录我们的用户名和密码在下一次访问时直接携带Cookie信息无需重新登录。由于Cookie是在浏览器中存储的所以它具有跨浏览器和跨域名的优势。 当浏览器向Web服务器发送请求时服务器可以在响应头中包含一个Set-Cookie头部告诉浏览器将一个Cookie存储在本地。浏览器在接收到这个响应后将会把Cookie存储在本地并在之后向该服务器发起请求时自动把这个Cookie带上。 Cookie通常用于实现用户会话管理、用户行为追踪、购物车、广告定向等功能。它可以存储一些简单的数据如登录状态、用户偏好设置、购物车中的商品信息等。一般来说Cookie的内容是经过加密处理的以免被恶意窃取或篡改。 Cookie有一些限制如每个域名下Cookie的数量和大小都有限制浏览器可以禁止Cookie、用户可以手动删除Cookie等。因此Cookie不适合存储大量或敏感的数据。为了解决这些问题HTML5提供了一种新的本地存储机制——Web Storage它可以存储更多数据并且数据不会在每次HTTP请求时被发送到服务器。
四、Session Session是一种在Web应用程序中管理用户状态的机制。 它通常用于在Web服务器上存储有关当前用户的信息以实现用户会话管理。Session是基于服务器端的技术在用户登录时创建并在用户退出或会话超时后销毁。 当用户通过Web浏览器访问一个使用Session的Web应用程序时应用程序将会在服务器上创建一个唯一的会话标识符session ID并将其传递给浏览器。浏览器随后将该会话标识符存储在Cookie中以便在后续的请求中将其发送回服务器。服务器会根据该会话标识符来找到该用户对应的会话数据。 Session通常用于存储用户的登录状态、用户的购物车信息、用户的偏好设置等信息。Session数据可以存储在服务器的内存中、硬盘上或者数据库中具体的实现方式取决于Web应用程序的特定需求。 值得注意的是Session也有一些限制。例如当服务器负载过高时可能会出现Session数据丢失或者超时的情况。因此Web开发人员应考虑使用其他技术来实现高可用性、高扩展性的Web应用程序。 8 、 Cookie 处理 通过 webdriver 可以对浏览器中的 cookie 进行处理常见处理方式有获取 cookie、添加 cookie、删除指定 cookie、删除所有 cookie。
8.1 获取 cookie 信息
from selenium import webdriver
from time import sleep
drvierwebdriver.Firefox()
drvier.get(http://www.chuangyijia.com/login)
打开前台登陆页面 drvier.implicitly_wait(3)
drvier.find_element_by_id(email).send_keys(810155067qq.com)
输入用户名 drvier.find_element_by_id(pwd).send_keys(a654321)
输入密码 drvier.find_element_by_css_selector(#submit).click()
点击登陆 cookie drvier.get_cookies()
获取登陆后的 cookie 信息 print cookie
打印获取到的 cookie 信息 8.2 向 cookie 中添加信息
from selenium import webdriver
from time import sleep
drvierwebdriver.Firefox()
drvier.get(http://www.chuangyijia.com/login)
打开前台登陆页面 cookie drvier.add_cookie({name: key-test , value: key-test})
添加 cookie 信息 添加 cookie可以使用 add_cookie 方式添加。
8.3 删除 cookie 中的信息
drvier.delete_cookie(ci_session)
删除 cookie drvier.delete_all_cookies()
删除所有 cookie 9、 expected_conditions 在自动化测试过程中通常需要对测试结果做出判断在此可以通过expected_conditions来实现预期结果的判定以此来断言执行状况。 expected_conditions 提供了很多方法常用的方法如下: title_is判断当前页面的 title 是否为预期结果 title_contains判断当前页面的 title 是否包含预期字符 presence_of_element_located判断一个元素是否存在但是不表示该元素可见如果该元素存在则返回该元素否则抛出异常。 visibility_of_element_located判断页面是否存在元素并且该元素可见如果存在并可见则返回该元素否则抛异常。 element_to_be_clickable判断页面是否存在元素并且该元素可见可点击如果存在并可见可点击则返回该元素否则抛异常。 presence_of_all_elements_located判断至少有一个页面存在叧要有一个则返回一个所有元素的列表 否则返回空列表。 text_to_be_present_in_element判断一个元素的文本中是否包含了预期字符串匹配则返回True否则返回 False。
from selenium import webdriver
导入 webdriverfrom selenium.webdriver.support import expected_conditions
导入 expected_conditions 模块from selenium.webdriver.common.by import By
在 expected_conditions 中需要使用定位by 提供统一使用 find_element()方法 简化了定位操作from time import sleep
导入 sleep 模块drvierwebdriver.Firefox()
打开浏览器drvier.get(http://www.chuangyijia.com/login)
打开登陆页面drvier.implicitly_wait(3)
等待 3 秒drvier.find_element_by_id(email).send_keys(810155067qq .com)
输入用户名drvier.find_element_by_id(pwd).send_keys(a654321)
输入密码drvier.find_element_by_css_selector(#submit).click()
登陆sleep(2)
此时等待 2 秒主要是为了获取 title太快的话获取的 title 是登陆成功之前的 titleis_titleexpected_conditions.title_is(u首页-创意家)
判断页面的 title 是否为预期的字符串is_title(drvier)
如果与预期字符串相等这里返回结果为 True否则为 False。Title_is 是一个 Class该 class 中实现了__call__方法那么这个类对象就能像函数一样调用了。is_in_titleexpected_conditions.title_contains(u创意家)
判断 title 中是否包含预期字符串is_in_title(drvier)
可以用 print 打印他的返回结果为 True 还 Falseis_existexpected_conditions.presence_of_element_located((By.CSS_SELECTOR,.sq_menu a:nth-child(3)))
判断元素是否存在页面上不一定会显示在页面上print is_exist(drvier)
如果存在这里返回元素信息 否则这里会出现NoSuchElementException 的异常。in_eleexpected_conditions.presence_of_all_elements_locate d((By.TAG_NAME,li))
页面是否至少存在一个指定元素print in_ele(drvier)
如果存在这里返回一个列表 否则返回列表为空visibility_existexpected_conditions.visibility_of_element _located((By.TAG_NAME,li))
检查元素是否可见visibility_exist(drvier)
如果元素存在并可见 则返回元素信息元素不可见则返回异常 NoSuchElementException 的异常如果元素存在但是不可见 则返回 False。is_text_in_eleexpected_conditions.text_to_be_present_in_element((By.CSS_SELECTOR,.menu ul:nth-child(1) li:nth- child(1) a:nth-child(1)),u意)
检查元素中是否包含字符串 print is_text_in_ele(drvier)
如果检查中包含字符串则返回 True否则返回 False。