使用Selenium进行Web自动化操作

发表于:2024-2-23 09:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:罗毅豪    来源:博客园

  我们可使用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.编写初始化代码,运行
  import time
  from selenium import webdriver
  from selenium.webdriver.chrome.service import Service
  s = Service("chromedriver.exe")
  browser = webdriver.Chrome(service=s)
  browser.get("http://www.gushiwen.cn")
  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
  使用示例如下:
  import time
  from selenium import webdriver
  from selenium.webdriver.chrome.service import Service
  from selenium.webdriver.common.by import By
  s = Service("chromedriver.exe")
  browser = webdriver.Chrome(service=s)
  browser.get("http://www.gushiwen.cn")
  input = browser.find_element(By.ID,"txtKey")
  input.send_keys("李白")
  inputBtn = browser.find_element(By.CSS_SELECTOR,"#search > form > input[type=submit]:nth-child(3)")
  inputBtn.click()
  time.sleep(10)
  三、获取元素信息
  1.xx.text
  2.xx.get_attribute("yy")
  3.xx.tag_name
  使用示例如下:
  btn = browser.find_element(By.LINK_TEXT,"古籍")
  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()
  使用示例如下:
  import time
  from selenium import webdriver
  from selenium.webdriver.chrome.service import Service
  from selenium.webdriver.common.by import By
  s = Service("chromedriver.exe")
  browser = webdriver.Chrome(service=s)
  browser.get("http://www.gushiwen.cn")
  time.sleep(8)
  browser.refresh()
  time.sleep(5)
  input = browser.find_element(By.ID,"txtKey")
  input.send_keys("李白")
  inputBtn = browser.find_element(By.CSS_SELECTOR,"#search > form > input[type=submit]:nth-child(3)")
  inputBtn.click()
  js = "document.documentElement.scrollTop = '10000'"
  browser.execute_script(js)
  time.sleep(5)
  browser.back()
  time.sleep(5)
  browser.quit()
  time.sleep(5)
  五、与IPA工具交互
  需要在项目目录加上chromedriver.exe,注意填写入参和出参。
  代码示例如下:
  import time
  from selenium import webdriver
  from selenium.webdriver.chrome.service import Service
  from selenium.webdriver.common.by import By
  s = Service("chromedriver.exe")
  browser = webdriver.Chrome(service=s)
  browser.get("http://www.gushiwen.cn")
  input_field = browser.find_element(By.ID,"txtKey")
  input_field.send_keys(input_val)
  inputBtn = browser.find_element(By.CSS_SELECTOR,"#search > form > input[type=submit]:nth-child(3)")
  inputBtn.click()
  res = browser.find_element(By.CSS_SELECTOR,"body > div.main3 > div.left > div.sonspic > div.cont > p:nth-child(3)")
  output_val = res.text
  time.sleep(5)
  六、无界面操作
  代码示例如下:
  from selenium import webdriver
  from selenium.webdriver.chrome.options import Options
  options = Options()
  options.add_argument("--headless")
  options.add_argument("--disable-gpu") #减少BUG
  options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
  browser = webdriver.Chrome(options=options)
  browser.get("http://www.gushiwen.cn")
  browser.save_screenshot("gushiwen.png")
  ps:在处理文件路径时,r前缀很有用。它可以确保路径中的反斜杠在字符串中保持不变,而不会被解释为转义字符。这在处理Windows文件路径时尤其有用。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号