• 使用Selenium进行Web自动化操作


    我们可使用Selenium进行Web自动化操作。

    一、环境搭建:

    1.下载安装Pycharm

    2.在Pycharm中新建项目

    3.在Pycharm中安装Selenium(FIle->Settings->Project:项目名->Python Interpreter->加号->搜索添加Selenium)

    4.下载符合浏览器版本的chromedriver.exe

    ·114之前chromedriver驱动版本:淘宝镜像

    · 115以后chromedriver驱动版本:国内镜像

    5.将chromedriver.exe放在项目中

    6.编写初始化代码,运行

    1.  import time
    2.   from selenium import webdriver
    3.   from selenium.webdriver.chrome.service import Service
    4.   s = Service("chromedriver.exe")
    5.   browser = webdriver.Chrome(service=s)
    6.   browser.get("http://www.gushiwen.cn")
    7.   time.sleep(10)

    二、元素定位

    使用find_element或find_elements函数。

    1.通过ID

    2.通过CLASS_NAME

    3.通过TAG_NAME

    4.通过CSS_SELECTOR

    5.通过XPATH

    6.通过LINK_TEXT

    7.通过NAME

    使用示例如下:

    1.  import time
    2.   from selenium import webdriver
    3.   from selenium.webdriver.chrome.service import Service
    4.   from selenium.webdriver.common.by import By
    5.   s = Service("chromedriver.exe")
    6.   browser = webdriver.Chrome(service=s)
    7.   browser.get("http://www.gushiwen.cn")
    8.   input = browser.find_element(By.ID,"txtKey")
    9.   input.send_keys("李白")
    10.   inputBtn = browser.find_element(By.CSS_SELECTOR,"#search > form > input[type=submit]:nth-child(3)")
    11.   inputBtn.click()
    12.   time.sleep(10)

    三、获取元素信息

    1.xx.text

    2.xx.get_attribute("yy")

    3.xx.tag_name

    使用示例如下:

    1.  btn = browser.find_element(By.LINK_TEXT,"古籍")
    2.   print(btn.get_attribute("href"))

    四、与页面交互

    1.xx.click()

    2.xx.send_keys(yy)

    3.browser.execute_script(js)

    4.browser.back()

    5.browser.refresh()

    6.browser.quit()

    使用示例如下:

    1.  import time
    2.   from selenium import webdriver
    3.   from selenium.webdriver.chrome.service import Service
    4.   from selenium.webdriver.common.by import By
    5.   s = Service("chromedriver.exe")
    6.   browser = webdriver.Chrome(service=s)
    7.   browser.get("http://www.gushiwen.cn")
    8.   time.sleep(8)
    9.   browser.refresh()
    10.   time.sleep(5)
    11.   input = browser.find_element(By.ID,"txtKey")
    12.   input.send_keys("李白")
    13.   inputBtn = browser.find_element(By.CSS_SELECTOR,"#search > form > input[type=submit]:nth-child(3)")
    14.   inputBtn.click()
    15.   js = "document.documentElement.scrollTop = '10000'"
    16.   browser.execute_script(js)
    17.   time.sleep(5)
    18.   browser.back()
    19.   time.sleep(5)
    20.   browser.quit()
    21.   time.sleep(5)

    五、与IPA工具交互

    需要在项目目录加上chromedriver.exe,注意填写入参和出参。

    代码示例如下:

    1.  import time
    2.   from selenium import webdriver
    3.   from selenium.webdriver.chrome.service import Service
    4.   from selenium.webdriver.common.by import By
    5.   s = Service("chromedriver.exe")
    6.   browser = webdriver.Chrome(service=s)
    7.   browser.get("http://www.gushiwen.cn")
    8.   input_field = browser.find_element(By.ID,"txtKey")
    9.   input_field.send_keys(input_val)
    10.   inputBtn = browser.find_element(By.CSS_SELECTOR,"#search > form > input[type=submit]:nth-child(3)")
    11.   inputBtn.click()
    12.   res = browser.find_element(By.CSS_SELECTOR,"body > div.main3 > div.left > div.sonspic > div.cont > p:nth-child(3)")
    13.   output_val = res.text
    14.   time.sleep(5)

    六、无界面操作

    代码示例如下:

    1.  from selenium import webdriver
    2.   from selenium.webdriver.chrome.options import Options
    3.   options = Options()
    4.   options.add_argument("--headless")
    5.   options.add_argument("--disable-gpu") #减少BUG
    6.   options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
    7.   browser = webdriver.Chrome(options=options)
    8.   browser.get("http://www.gushiwen.cn")
    9.   browser.save_screenshot("gushiwen.png")

    ps:在处理文件路径时,r前缀很有用。它可以确保路径中的反斜杠在字符串中保持不变,而不会被解释为转义字符。这在处理Windows文件路径时尤其有用。

    1. ​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
    2. 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
    3. 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
    4. 分享他们的经验,还会分享很多直播讲座和技术沙龙
    5. 可以免费学习!划重点!开源的!!!
    6. qq群号:485187702【暗号:csdn11

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 相关阅读:
    用户与权限linux篇
    软考 系统架构设计师系列知识点之软件可靠性基础知识(4)
    conda和pip安装有什么区别
    Vue的插槽&Vue的过渡动画
    算法训练Day50 | LeetCode123. 买卖股票的最佳时机III(最多买卖2次);LeetCode188. 买卖股票的最佳时机IV(最多买卖K次)
    知识直播:时代乐见搜狐的长期主义选择
    K8s 之 Helm 部署 MySQL 5.7
    机器学习基本术语
    python代码中经常看到,if __name__ == “__main__“,作用是啥
    前端JavaScript中的 == 和 ===区别,以及他们的应用场景,快来看看吧,积累一点知识。
  • 原文地址:https://blog.csdn.net/weixin_57794111/article/details/138218396