docker配置selenium环境和appium环境

docker配置selenium环境和appium环境

  1. 拉取镜像

    docker pull python:alpine3.6
    docker pull selenium/standalone-chrome
    docker pull appium/appium
    
  2. 使用dockerfile安装第三方库

    • 创建docker-dir文件夹,并在改文件夹下创建Dockerfile文件

    • 在Dockerfile文件中编写以下代码,安装第三方库

      FROM python:alpine3.6
      
      # 安装gcc编译环境
      RUN apk add --no-cache gcc musl-dev
      
      # 更新pip
      RUN pip install --upgrade pip
      
      # 下面模块的安装有的需要gcc编译环境
      RUN pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple && pip install -i https://pypi.tuna.tsinghua.edu.cn/simple twisted && pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple && pip install aiohttp -i https://pypi.tuna.tsinghua.edu.cn/simple && pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple && pip install appium-python-client -i https://pypi.tuna.tsinghua.edu.cn/simple
      
      
      # 安装pyspider,用的到就装
      RUN apk add --no-cache curl-dev libxml2-dev libxslt-dev zlib-dev libffi-dev openssl-dev && pip install pyspider -i https://pypi.tuna.tsinghua.edu.cn/simple
      
      
      # 安装scrapy,用的到就装
      RUN apk add --no-cache libxml2-dev libxslt-dev zlib-dev libffi-dev openssl-dev && pip install scrapy==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
      
      # 查看已安装的库
      RUN pip list
      
      
  3. 使用docker-compose部署selenium爬虫项目

    • 爬虫代码固定格式如下:selenium_test.py

      from selenium import webdriver
      from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
      import time
      
      time.sleep(5)    # 这里的等待是等selenium完全启动,不然会报错,可自己优化(http://chrome:4444/wd/hub/status/)
      print("start !!!!")
      driver = webdriver.Remote(
          command_executor="http://chrome:4444/wd/hub",        # 这里的chrome是使用docker-compose部署时的selenium服务的名称,如果是使用docker启动的selenium,请使用docker启动后容器的ip地址
          desired_capabilities=DesiredCapabilities.CHROME
      )
      # 上面是固定格式,下面可自行编写
      driver.get('https://www.baidu.com')
      print(driver.title)
      with open('/data/baidu.html', 'w') as f:
          f.write(driver.page_source)
      print()
      # print(driver.page_source)
      driver.close()
      
      
    • 编写docker-compose.yml

      version: "3.6"
      services:
        spider:
          image: spider-dev
          volumes:
            - /root/code/selenium_test.py:/code/selenium_test.py
            - /root/data:/data
          command: python /code/selenium_test.py
          depends_on:
            - chrome
        chrome:
          image: selenium/standalone-chrome
          ports:
            - "4444:4444"
          shm_size: 2g
      

      注意:上面spider服务的镜像是运行Dockerfile文件后,新构建的镜像名称,可自定义名称

  4. 使用docker-compose部署appinum爬虫项目

    • 爬虫代码固定格式如下:appium_test.py

      from appium import webdriver
      
      desired_caps = {}
      desired_caps["paltformName"] = ""          # 操作系统
      desired_caps["platformVersion"] = ""       # 操作系统版本
      desired_caps["deviceName"] = ""            # 产品名称
      desired_caps["appPackage"] = ""            # app应用包的名称,不是app的名称
      desired_caps["appActicity"] = ""           #  app应用包名称/后面的东西  往后下面看有教程
      
      
      driver = webdriver.Remote(
          command_executor="http://appium:4723/wd/hub",        # 这里的chrome是使用docker-compose部署时的selenium服务的名称,如果是使用docker启动的selenium,请使用docker启动后容器的ip地址
          desired_capabilities=desired_caps
      )
      
    • 编写docker-compose.yml

      version: "3.6"
      services:
        spider:
          image: spider-dev
          volumes:
            - /root/code/appium_test.py:/code/appium_test.py
          command: python /code/appium_test.py
          depends_on:
            - appium
        appium:
          image: appium/appium
          ports:
            - "4723:4723"
          privileged: true
      	volumes: 
      	  - ~/.android:/root/.android
      	  - /dev/bus/usb:/dev/bus/usb
      
    • 连接设备

      docker exec -it container-appium adb devices
      
    • 查找appPackage和appActicity

      docker exec -it container-appium adb shell      # 打开一个shell
      
      # 在新打开的shell中输入以下命令, 然后打开要查找的app
      logcat| grep  ActivityManager
      
      # 找cmp, 斜杠前面的是appPackage后面的是appActicity
      
上一篇:appium 源码分析


下一篇:Appium环境搭配