【第三天】零基础入门刷题Python-Selenium-自动化测试-打开百度的首页搜索B站然后打开B站-XPATH详细语法介绍-driver.quit()和driver.close()区别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

第零天练习补充零基础入门刷题Python-Selenium-自动化测试-搭建WebDriver驱动-以及下载驱动的地址
第一天练习打开Firefox浏览器实例和打开Chrome浏览器实例-进入百度的首页
第二天练习用Chrome浏览器实例-在百度的首页上搜索B站
第三天练习用Chrome浏览器实例-在百度的首页上搜索B站-利用XPATH打开B站-注意:(从现在开始以后零基础入门刷题Python-Selenium-自动化测试都会用XPATH的方法来使用
第四天练习用Chrome浏览器实例-在百度的首页上搜索B站后打开B站-在B站搜索框中搜索Selenium
第五天练习用Chrome浏览器实例-浏览器窗口的设置-和在当前浏览器窗口截图操作


提示:以下是本篇文章正文内容,下面案例可供参考

一、本节XPATH语法?driver.quit()和driver.close()区别?

XPATH详细语法:
一、基本路径表达式:
/表示从根节点开始选择元素,是绝对路径的起始。例如,/html/body/div 表示从 HTML 文档的根节点(html)开始,选择 body下的div元素。
//表示在整个文档中查找元素,不考虑其位置,是相对路径。
二、节点选择:
*匹配任何元素节点。例如,//* 会匹配文档中的所有元素节点。
element根据元素名称选择节点。例如,//p 会查找所有的 p元素。
三、根据属性选择节点:
[@attribute=‘value’]根据元素的属性及其值选择节点。例如,//input[@type=‘text’] 会查找所有 type 属性值为 text 的 input元素。
[@attribute]选择具有指定属性的节点,不考虑属性值。例如,//div[@class] 会查找所有具有 class 属性的 div元素。
四、根据位置选择节点:
[position()]根据元素的位置选择节点。例如,//li[position()=2] 会选择文档中的第二个 li 元素。
[last()]选择最后一个元素。例如,//li[last()] 会选择最后一个 li 元素。
[position()< 3]选择最后一个元素。例如,//li[last()] 会选择最后一个 li 元素。
五、 轴(Axes):
child::选择当前节点的子节点。例如,child::div 会选择当前节点的所有 div 子节点。
descendant::选择当前节点的后代节点(包括子节点、孙节点等)。例如,descendant::p 会选择当前节点的所有 p 后代节点。
ancestor::选择当前节点的祖先节点。例如,ancestor::div 会选择当前节点的所有 div 祖先节点。
following-sibling::选择当前节点之后的兄弟节点。例如,following-sibling::p 会选择当前节点后面的所有 p 兄弟节点。
preceding-sibling::选择当前节点之前的兄弟节点。例如,preceding-sibling::p 会选择当前节点前面的所有 p 兄弟节点。
六、文本选择:
text()选择元素的文本内容。例如,//p/text() 会选择所有 p 元素的文本内容。
七、组合选择:
I(竖线)可用于组合多个路径表达式。例如,//div[@class=‘header’] I(竖线) //div[@class=‘footer’] 会选择 class 属性为 header 的 div 元素和 class 属性为 footer 的 div 元素。
八、函数使用:
contains()用于检查元素的属性是否包含指定的字符串。例如,//div[contains(@class,‘container’)] 会查找 class 属性中包含 container 的 div 元素。
starts-with()检查元素的属性是否以指定字符串开始。例如,//div[starts-with(@id,‘section’)] 会查找 id 属性以 section 开始的 div 元素。

driver.quit():
仅关闭当前浏览器窗口或标签页。
如果WebDriver实例还关联了其他窗口或标签页,这些窗口或标签页将保持打开状态。
常用于需要在同一测试会话中打开和关闭多个窗口的场景。

driver.close():
仅关闭当前浏览器窗口或标签页。
如果WebDriver实例还关联了其他窗口或标签页,这些窗口或标签页将保持打开状态。
常用于需要在同一测试会话中打开和关闭多个窗口的场景。

二、详细代码

1.对本节代码XPath表达式的解释

通过XPATH定位属性id的方法在百度的首页上搜索B站(示例):

对XPath表达式 '//div[@id="content_left"]//a[contains(text(), "哔哩哔哩")]' 的详细解释:
1.//:
	这对双斜杠表示选择文档中的节点时,不考虑它们位于当前节点(在XPath的上下文中,这通常是从根节点或某个指定的起始节点开始)的什么层级。换句话说,它会搜索整个文档树,查找匹配的节点,而不仅仅是直接子节点。
2.div[@id="content_left"]:
	这部分指定了要查找的div元素,它必须有一个id属性,且该属性的值为"content_left"。@id="content_left"是一个条件(谓语),它指定了div元素必须满足的属性值。
3.//a:
	在找到了满足条件的div元素之后,这部分表示从该div元素开始,搜索其内部(包括所有子元素,无论层级多深)的所有a(锚点/链接)元素。
4.[contains(text(), "哔哩哔哩")]:
	这是另一个条件(谓语),它应用于前面找到的a元素。contains(text(), "哔哩哔哩")是个函数,它检查a元素的文本内容是否包含字符串"哔哩哔哩"。text()是一个函数,它返回元素的文本内容(不包括任何子元素的文本)。因此,这个条件会筛选出所有文本内容包含“哔哩哔哩”的a元素。综上所述,这个XPath表达式会查找整个文档中,位于ID为content_left的div元素内部(无论层级多深)的所有a元素,这些a元素的文本内容必须包含“哔哩哔哩”。

在实际应用中,这个表达式通常用于Selenium WebDriver等自动化测试工具中,以定位并操作网页上的特定元素。

代码如下(示例):

# 导入Selenium WebDriver的Chrome浏览器驱动模块
from selenium import webdriver
# 导入用于元素定位的By类
from selenium.webdriver.common.by import By
# 导入time模块用于暂停执行
import time
 
# 创建一个Chrome浏览器的实例
# 这里假设chromedriver已正确配置在系统PATH中,或者提供了chromedriver的路径
driver = webdriver.Chrome()
 
# 使用driver对象打开百度首页的URL
driver.get('https://www.baidu.com')
 
# 使用find_element方法通过XPATH定位百度搜索框
# XPATH表达式'//input[@id="kw"]'用于选择ID为"kw"的input元素,即搜索框
search_box = driver.find_element(By.XPATH, '//input[@id="kw"]')
# 在搜索框中输入搜索关键词“B站”
search_box.send_keys('B站')
 
# 提交搜索,这通常是通过点击搜索框旁边的搜索按钮或通过按下回车键来实现的
# 但由于我们已经通过send_keys输入了关键词,并且搜索框通常具有搜索功能,
# 因此调用submit()方法将触发搜索
search_box.submit()
 
# 等待搜索结果页面加载
# 这里使用简单的time.sleep()方法暂停执行3秒
# 在实际项目中,为了提高效率和可靠性,推荐使用WebDriverWait等更精确的等待方式
time.sleep(3)
 
# 查找搜索结果中第一个包含"哔哩哔哩"文本的元素
# 使用find_elements方法返回所有匹配的元素列表
# XPATH表达式'//div[@id="content_left"]//a[contains(text(), "哔哩哔哩")]'用于在ID为"content_left"的div内
# 查找所有a元素,这些元素的文本内容包含"哔哩哔哩"
results = driver.find_elements(By.XPATH, '//div[@id="content_left"]//a[contains(text(), "哔哩哔哩")]')
# 如果找到了至少一个匹配项,则点击第一个元素
if results:
    results[0].click()
 

# 等待一段时间以便查看截图结果(这里是为了演示目的而添加的延迟)
# 在实际自动化测试中,通常不需要这样的延迟,除非有特定的需求
time.sleep(5)
 
# 打印当前浏览器窗口的标题(在点击搜索结果后,这将显示被点击页面的标题)
# 这可以用于验证是否成功导航到了预期的页面
print(driver.title)
 
# 关闭浏览器并释放与之关联的所有资源
driver.quit()

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文介绍了XPATH语法是什么,driver.quit()和driver.close()区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值