【第二天】零基础入门刷题Python-Selenium-自动化测试-打开百度的首页搜索B站-By类的八种定位方法-find_element方法-send_keys方法

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

文章目录

  • 前言
  • 一、By类是什么?time模块是什么?
  • 二、使用步骤
    • 1.通过ID定位的方法在百度的首页上搜索B站
    • 2.通过Name定位的方法在百度的首页上搜索B站
    • 3.通过ClassName定位的方法在百度的首页上搜索B站
    • 4.通过TagName定位的方法在百度的首页上搜索B站
    • 5.通过LinkText定位的方法在百度的首页上搜索B站
    • 6.通过PartialLinkText定位的方法在百度的首页上搜索B站
    • 7.通过CSS Selector定位的方法在百度的首页上搜索B站
    • 8.通过XPath定位定位的方法在百度的首页上搜索B站
  • 总结


前言

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

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


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

一、By类是什么?time模块是什么?

在Selenium WebDriver中,By类是一个非常重要的组件,它提供了一组用于定位网页元素的定位器策略。这些定位器策略允许开发者根据元素的属性(如ID、类名、CSS选择器、XPath、标签名称、链接文本或部分链接文本等)来查找和与元素进行交互。

time模块是Python中处理时间相关操作的核心工具。它提供了一系列函数,用于获取当前时间、时间格式化、时间转换、时间延迟以及计时等多种功能。

二、使用步骤

1.通过ID定位的方法在百度的首页上搜索B站

这种方法适用于页面元素具有唯一ID属性的情况。
代码如下(示例):

search_box = driver.find_element(By.ID, 'kw')
# 导入selenium库中的webdriver模块,用于控制浏览器
from selenium import webdriver
# 导入By类,用于定位页面元素
from selenium.webdriver.common.by import By
# 导入time模块,用于设置脚本执行时的等待时间
import time
 
# 创建一个Chrome浏览器的实例,这里假设chromedriver已正确配置在系统PATH中
driver = webdriver.Chrome()
 
# 使用driver对象打开百度首页
driver.get('https://www.baidu.com')
 
# 使用find_element方法通过ID定位百度搜索框,ID为'kw'
# 注意:这里的定位方式依赖于百度页面的HTML结构,若结构变化,需相应调整
search_box = driver.find_element(By.ID, 'kw')
 
# 在搜索框中输入搜索关键词“B站”
search_box.send_keys('B站')
 
# 等待搜索结果页面加载,这里使用简单的time.sleep()方法,实际项目中推荐使用WebDriverWait等更精确的等待方式
time.sleep(3)
 
# 打印当前浏览器页面的标题,通常这是搜索结果页面的标题,用于验证搜索是否成功
# 注意:这里的标题是百度搜索结果页面的默认标题加上搜索关键词,具体显示可能因百度页面更新而有所变化
print(driver.title)

2.通过Name定位的方法在百度的首页上搜索B站

当页面元素具有name属性时,可以使用此方法。
代码如下(示例):

search_box = driver.find_element(By.NAME, 'wd')
# 导入selenium库中的webdriver模块,用于控制浏览器
from selenium import webdriver
# 导入By类,用于定位页面元素
from selenium.webdriver.common.by import By
# 导入time模块,用于设置脚本执行时的等待时间
import time

# 创建一个Chrome浏览器的实例,这里假设chromedriver已正确配置在系统PATH中
driver = webdriver.Chrome()

# 使用driver对象打开百度首页
driver.get('https://www.baidu.com')

# 使用find_element方法通过NAME定位百度搜索框,NAME为'wd'
# 注意:这里的定位方式依赖于百度页面的HTML结构,若结构变化,需相应调整
search_box = driver.find_element(By.NAME, 'wd')

# 在搜索框中输入搜索关键词“B站”
search_box.send_keys('B站')

# 等待搜索结果页面加载,这里使用简单的time.sleep()方法,实际项目中推荐使用WebDriverWait等更精确的等待方式
time.sleep(3)

# 打印当前浏览器页面的标题,通常这是搜索结果页面的标题,用于验证搜索是否成功
# 注意:这里的标题是百度搜索结果页面的默认标题加上搜索关键词,具体显示可能因百度页面更新而有所变化
print(driver.title)

3.通过ClassName定位的方法在百度的首页上搜索B站

适用于通过元素的class属性进行定位。
代码如下(示例):

search_box = driver.find_element(By.CLASS_NAME, 's_ipt')
# 导入selenium库中的webdriver模块,用于控制浏览器
from selenium import webdriver
# 导入By类,用于定位页面元素
from selenium.webdriver.common.by import By
# 导入time模块,用于设置脚本执行时的等待时间
import time

# 创建一个Chrome浏览器的实例,这里假设chromedriver已正确配置在系统PATH中
driver = webdriver.Chrome()

# 使用driver对象打开百度首页
driver.get('https://www.baidu.com')

# 使用find_element方法通过CLASS_NAME定位百度搜索框,CLASS_NAME为's_ipt'
# 注意:这里的定位方式依赖于百度页面的HTML结构,若结构变化,需相应调整
search_box = driver.find_element(By.CLASS_NAME, 's_ipt')

# 在搜索框中输入搜索关键词“B站”
search_box.send_keys('B站')

# 等待搜索结果页面加载,这里使用简单的time.sleep()方法,实际项目中推荐使用WebDriverWait等更精确的等待方式
time.sleep(3)

# 打印当前浏览器页面的标题,通常这是搜索结果页面的标题,用于验证搜索是否成功
# 注意:这里的标题是百度搜索结果页面的默认标题加上搜索关键词,具体显示可能因百度页面更新而有所变化
print(driver.title)

4.通过TagName定位的方法在百度的首页上搜索B站

注意这里使用的是find_elements(复数形式),因为通过标签名定位通常会返回多个元素。单个元素定位时,如果确定标签在页面中是唯一的,也可以使用find_element。
代码如下(示例):

search_box = driver.find_elements(By.TAG_NAME, 'input')
# 导入selenium库中的webdriver模块,用于控制浏览器
from selenium import webdriver
# 导入By类,用于定位页面元素
from selenium.webdriver.common.by import By
# 导入time模块,用于设置脚本执行时的等待时间
import time

# 创建一个Chrome浏览器的实例
driver = webdriver.Chrome()

# 打开百度首页
driver.get('https://www.baidu.com')

# 使用find_elements方法通过TagName定位所有input元素
input_elements = driver.find_elements(By.TAG_NAME, 'input')

# 遍历所有input元素,找到具有特定属性(如name="wd")的搜索框
# 注意:这里的属性选择取决于百度页面的当前HTML结构
search_box = None
for input_element in input_elements:
    if input_element.get_attribute('name') == 'wd':
        search_box = input_element
        break

# 检查是否成功找到了搜索框
if search_box:
    # 在搜索框中输入搜索关键词“B站”
    search_box.send_keys('B站')

    # 提交搜索,这里选择按下回车键
    search_box.send_keys(Keys.RETURN)

    # 等待搜索结果页面加载(这里使用简单的等待,实际项目中应使用更精确的等待方式)
    import time

    time.sleep(3)

    # 打印当前浏览器页面的标题(通常是搜索结果页面的标题)
    print(driver.title)
else:
    print("未找到搜索框")

# 关闭浏览器(在测试完成后)
driver.quit()

5.通过LinkText定位的方法在百度的首页上搜索B站

适用于定位文本内容完全匹配的链接元素。find_element。
代码如下(示例):

search_box = driver.find_element(By.LINK_TEXT, 'link_text')
#通过By.LINK_TEXT定位器在百度首页上搜索“B站”是不可行的,因为By.LINK_TEXT用于定位具有特定显示文本的标签(即超链接)。百度首页的搜索框是一个元素,而不是一个超链接,因此它没有可用于By.LINK_TEXT的文本内容。

6.通过PartialLinkText定位的方法在百度的首页上搜索B站

当链接文本较长或只需匹配部分文本时,可以使用此方法。
代码如下(示例):

search_box = driver.find_element(By.PARTIAL_LINK_TEXT, 'partial_link_text')
#通过By.PARTIAL_LINK_TEXT定位器在百度首页上搜索“B站”同样是不可行的,因为By.PARTIAL_LINK_TEXT用于定位包含特定文本片段的标签(即超链接)。与By.LINK_TEXT不同,By.PARTIAL_LINK_TEXT允许您定位包含指定文本片段(而非完整文本)的超链接。然而,百度首页的搜索框仍然是一个元素,不是一个超链接,因此这种方法也不适用。

7.通过CSS Selector定位的方法在百度的首页上搜索B站

CSS选择器提供了强大的定位能力,可以基于元素的属性、层级关系等进行定位。
代码如下(示例):

search_box = driver.find_element(By.CSS_SELECTOR, "#kw")
# 导入selenium库中的webdriver模块,用于控制浏览器
from selenium import webdriver
# 导入By类,用于定位页面元素
from selenium.webdriver.common.by import By
# 导入time模块,用于设置脚本执行时的等待时间
import time

# 创建一个Chrome浏览器的实例,这里假设chromedriver已正确配置在系统PATH中
driver = webdriver.Chrome()

# 使用driver对象打开百度首页
driver.get('https://www.baidu.com')

# 使用find_element方法通过CSS_SELECTOR定位百度搜索框,CSS_SELECTOR为'kw'
# 注意:这里的定位方式依赖于百度页面的HTML结构,若结构变化,需相应调整
search_box = driver.find_element(By.CSS_SELECTOR, "#kw")

# 在搜索框中输入搜索关键词“B站”
search_box.send_keys('B站')

# 等待搜索结果页面加载,这里使用简单的time.sleep()方法,实际项目中推荐使用WebDriverWait等更精确的等待方式
time.sleep(3)

# 打印当前浏览器页面的标题,通常这是搜索结果页面的标题,用于验证搜索是否成功
# 注意:这里的标题是百度搜索结果页面的默认标题加上搜索关键词,具体显示可能因百度页面更新而有所变化
print(driver.title)

8.通过XPath定位定位的方法在百度的首页上搜索B站

XPath是一种在XML文档中查找信息的语言,但在Web自动化中,它同样非常强大,可以定位几乎任何页面元素。
代码如下(示例):

search_box = driver.find_element(By.XPATH, '//input[@id="kw"]')#使用 id 属性
search_box = driver.find_element(By.XPATH, '//input[@name="wd"]')#使用 name 属性
search_box = driver.find_element(By.XPATH, '//input[@class="s_ipt"]')#使用 class 属性
# 导入selenium库中的webdriver模块,用于控制浏览器
from selenium import webdriver
# 导入By类,用于定位页面元素
from selenium.webdriver.common.by import By
# 导入time模块,用于设置脚本执行时的等待时间
import time

# 创建一个Chrome浏览器的实例,这里假设chromedriver已正确配置在系统PATH中
driver = webdriver.Chrome()

# 使用driver对象打开百度首页
driver.get('https://www.baidu.com')

# 使用find_element方法通过XPATH定位百度搜索框,XPATH为'//input[@id="kw"]','//input[@name="wd"]','//input[@class="s_ipt"]'
# 注意:这里的定位方式依赖于百度页面的HTML结构,若结构变化,需相应调整

# 使用id属性
search_box = driver.find_element(By.XPATH, '//input[@id="kw"]')
# search_box = driver.find_element(By.XPATH, '//input[@name="wd"]')# 使用 name 属性
# search_box = driver.find_element(By.XPATH, '//input[@class="s_ipt"]')# 使用 class 属性
# 在搜索框中输入搜索关键词“B站”
search_box.send_keys('B站')

# 等待搜索结果页面加载,这里使用简单的time.sleep()方法,实际项目中推荐使用WebDriverWait等更精确的等待方式
time.sleep(3)

# 打印当前浏览器页面的标题,通常这是搜索结果页面的标题,用于验证搜索是否成功
# 注意:这里的标题是百度搜索结果页面的默认标题加上搜索关键词,具体显示可能因百度页面更新而有所变化
print(driver.title)


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文介绍了By类是什么?time模块是什么?,和八种By类定位的方法,find_element方法,send_keys方法。

你可能感兴趣的:(python,selenium,测试工具)