0


6.1.selenium

    Selenium 是一个用于自动化 Web 浏览器的工具,它支持多种浏览器,并提供了一组功能强大的 API,用于在浏览器中模拟用户操作。通过使用 Selenium,你可以编写自动化脚本来执行各种 Web 测试任务,如测试 Web 应用程序的功能、性能和兼容性。

下面是使用 Selenium 进行自动化测试的一般步骤:

  1. 安装 Selenium 库:首先,你需要安装 Selenium 库。Selenium 提供了不同语言的客户端库,如 Python、Java、JavaScript 等,你可以根据自己的喜好选择合适的语言库进行安装。
  2. 选择浏览器驱动:Selenium 需要与浏览器驱动程序一起使用,以便控制浏览器。你需要下载并配置适合你使用的浏览器的驱动程序,比如 Chrome 的驱动程序为 ChromeDriver。
  3. 编写测试脚本:使用选定的编程语言编写测试脚本,通过 Selenium 提供的 API 来控制浏览器执行各种操作,如打开网页、点击按钮、填写表单等。
  4. 执行测试脚本:运行编写的测试脚本,Selenium 将自动打开浏览器并模拟用户操作。你可以观察测试执行过程,检查是否符合预期。
  5. 分析结果:执行完测试后,分析测试结果,查看是否出现错误或异常情况,从而改进和优化测试脚本。

python+selenium+phantomjs可以构成一个爬虫结构。
phantomjs负责渲染解析JavaScriptselenium负责驱动浏览器,和与python对接python负责后期处理

6.1.1.selenium的安装

    (1)下载地址:

                            selenium · PyPI

    (2)下载安装包:

                            ![](https://img-blog.csdnimg.cn/direct/42eff57702d94eebb1126b92e7b205c8.png)

            选择 selenium-4.18.1.tar.gz,进行下载

    (3)将下载的安装包进行解压,然后在解压的目录下,执行该命令就行pip install selenium 

            或者可以在解压的目录下,执行python setup.py install。setup.py就在解压的根目录下。

6.1.2.例子

** 例1:使用百度检索**

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

# 启动 Edge 浏览器
driver = webdriver.Edge()

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

# 定位搜索输入框并输入关键词
search_box = driver.find_element(By.NAME, "wd")
search_box.send_keys("爬虫")

# 模拟键盘回车,执行搜索
search_box.send_keys(Keys.RETURN)

# 等待搜索结果加载
driver.implicitly_wait(5)  # 隐式等待 5 秒

# 输出搜索结果的标题
results = results = driver.find_elements(By.CSS_SELECTOR, "h3.t a")
for result in results:
    print(result.text)

# 关闭当前标签页
driver.close()
    在 Selenium 中,
find_element()

方法用于查找页面上符合条件的第一个元素。该方法接受两个参数:定位器(locator)和定位器的值(locator value)。

详细讲解下

find_element()

方法里面的参数:

  1. 定位器(locator):- 定位器指定了要查找的元素的类型或属性。在 Selenium 中,常用的定位器包括: - By.ID: 通过元素的 id 属性定位元素。- By.NAME: 通过元素的 name 属性定位元素。- By.CLASS_NAME: 通过元素的 class 属性定位元素。- By.TAG_NAME: 通过元素的标签名定位元素。- By.XPATH: 使用 XPath 表达式定位元素。- By.CSS_SELECTOR: 使用 CSS 选择器定位元素。- By.LINK_TEXT: 通过链接文本定位 <a> 元素。- By.PARTIAL_LINK_TEXT: 通过部分链接文本定位 <a> 元素。
  2. 定位器的值(locator value):- 定位器的值是用来匹配页面上元素的具体信息,如 id 值、name 值、class 名称、XPath 表达式等,根据不同的定位器类型而异。

举例来说,

driver.find_element(By.NAME, "wd")

中的参数解释为:

  • 定位器:By.NAME,表示通过元素的 name 属性进行定位。
  • 定位器的值:"wd",表示要查找的元素的 name 属性的值为 "wd"。

通过合理选择定位器和定位器的值,可以准确地定位到页面上的目标元素。这样就可以在自动化测试过程中与页面元素进行交互。

例2.向网易邮箱登录界面输入用户名

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Edge()
driver.get("https://mail.163.com/")

# 切换到指定的 <iframe>,可以通过索引、名称、ID 或元素来定位
iframe = driver.find_element(By.TAG_NAME, "iframe")
driver.switch_to.frame(iframe)
# 在 <iframe> 中等待并查找元素
wait = WebDriverWait(driver, 10)
username = wait.until(EC.presence_of_element_located((By.XPATH, "//input[@name='email']")))
# 输入用户名
username.send_keys("123456")
# 切回主文档
driver.switch_to.default_content()
time.sleep(10)
# 关闭浏览器
driver.quit()

6.1.3.等待

有上面的第二个例子可以看出,等待的重要性,所以我们来了解下selenium的等待。

6.1.3.1.显式等待
    其实也就是,**指定某一条件直到这个条件成立时才会继续执行**,可以设置超时时间,如果超过这个时间元素依然没被加载,就会执出异常。

6.1.2的第二个例子就是一个显式等待的例子。

主要通过【wait = WebDriverWait(driver, 10)】设定,10代表10秒。默认是500ms。

6.1.3.2.隐式等待
    在6.1.2.的第二个例子的基础上,做稍微的修改。
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Edge()
driver.implicitly_wait(10)
driver.get("https://mail.163.com/")

# 切换到指定的 <iframe>,可以通过索引、名称、ID 或元素来定位
iframe = driver.find_element(By.TAG_NAME, "iframe")
driver.switch_to.frame(iframe)
# 在 <iframe> 中等待并查找元素
wait = WebDriverWait(driver, 10)
username = wait.until(EC.presence_of_element_located((By.XPATH, "//input[@name='email']")))
# 输入用户名
username.send_keys("123456")
# 切回主文档
driver.switch_to.default_content()
time.sleep(10)
# 关闭浏览器
driver.quit()

追加一句【driver.implicitly_wait(10)】

   implicitly_wait

方法被用来设置隐式等待时间为 10 秒。一旦设置了隐式等待时间,在之后的代码中,如果通过

find_element

等方法查找元素时没有立即找到,Selenium 将等待最多设定的时间,直到元素可用或超时。

**请注意,隐式等待会在整个 WebDriver 对象的生命周期内起作用,对所有的

find_element

find_elements

方法都有效。**

6.1.3.3.线程休眠
    time.sleep(time),这是使用线程休眠延时的办法,也是比较常用的。 

本文转载自: https://blog.csdn.net/sty3318/article/details/136517685
版权归原作者 sty3318 所有, 如有侵权,请联系我们删除。

“6.1.selenium”的评论:

还没有评论