| 李明 
 | 
 
  抖音短视频的操作步骤(一)1.首先通过模拟器打开抖音,等待加载完毕。   2.完全进去后,左上角有个放大镜的窗口,点击搜索框,输入抖音ID(191433445)   3.点击用户的标签,点击头像,在点击进入“陈赫” 前,先看看关注的标签是否存在  4.进入“陈赫”页面后,点击粉丝,然后进行模拟滑动,通过上节的实际使用的(mitmdump)解析粉丝数据存入数据库中。   编写python的脚本通过appium操作抖音(二)
  2.下载抖音apk 
  3.查看抖音apk的信息 
     
 
 
                      #获取列表 adb devices 
                      #进入监控日志 adb -s 127.0.0.1:62025 logcat>E:/log.txt 
                      #启动后,点开抖音,然后查看E盘目录下的log.txt文件  
  
 3.获取安卓的版本号 
  4.测试配置 
  
 
                      #!/usr/bin/env python 
                      import time 
                      from appium 
                      import webdriver 
                      from selenium.webdriver.support.ui 
                      import WebDriverWait
cap = { 
                      "platformName": 
                      "Android", 
                      "platformVersion": 
                      "4.4.2", 
                      "deviceName": 
                      "127.0.0.1:62001", 
                      "appPackage": 
                      "com.ss.android.ugc.aweme", 
                      "appActivity": 
                      "com.ss.android.ugc.aweme.main.MainActivity", 
                      "noReset": 
                      True, 
                      "unicodeKeyboard":
                      True, 
                      "resetkeyboard":
                      True }
driver = webdriver.Remote(
                      "http://localhost:4723/wd/hub",cap) 
                      
                      def 
                      get_size
                      (): x = driver.get_window_size()[
                      'width']
    y = driver.get_window_size()[
                      'height'] 
                      return(x,y)开始解析页面的xpath信息(三)1.关闭上边测试用的appium,单独启动下抖音app  2.暂停播放,启动uiautomatorviewer。源码包中有加强版的uiautomatorviewer。看过之前文章的老铁都懂。一定要暂停,否则uiautomatorviewer。  
  
 //android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.TabHost[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[2]/android.widget.FrameLayout[1]/android.widget.ImageView[1] 3.进入搜索页面后,需要先点击搜索框,如果框中存在“191433445”,直接点击,不存在需要在搜索框中输入“191433445”,然后点击右边的搜索按钮  
 //android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.EditText[1]  
 //android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.support.v7.widget.RecyclerView[1]/android.widget.LinearLayout[1]/android.widget.TextView[1]  
 //android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.TextView[1]  3.搜索结果页面,点击【用户】,点击【头像】,进入【用户信息界面】。   
 //android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.HorizontalScrollView[1]/android.widget.LinearLayout[1]/android.support.v7.app.ActionBar
                      $Tab[3]/android.widget.LinearLayout[1]/android.widget.TextView[1] 
 //android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[2]/android.view.View[1]/android.support.v7.widget.RecyclerView[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ImageView[1]  4.进入【用户信息界面】,点击红色粉丝这个位置。进入粉丝列表  
 //android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.HorizontalScrollView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[5]/android.widget.LinearLayout[3]/android.widget.TextView[2]  python代码的编写
 
                      #!/usr/bin/env python 
                      import time 
                      from appium 
                      import webdriver 
                      from selenium.webdriver.support.ui 
                      import WebDriverWait
cap = { 
                      "platformName": 
                      "Android", 
                      "platformVersion": 
                      "4.4.2", 
                      "deviceName": 
                      "127.0.0.1:62001", 
                      "appPackage": 
                      "com.ss.android.ugc.aweme", 
                      "appActivity": 
                      "com.ss.android.ugc.aweme.main.MainActivity", 
                      "noReset": 
                      True, 
                      "unicodeKeyboard":
                      True, 
                      "resetkeyboard":
                      True }
driver = webdriver.Remote(
                      "http://localhost:4723/wd/hub",cap) 
                      
                      def 
                      get_size
                      (): x = driver.get_window_size()[
                      'width']
    y = driver.get_window_size()[
                      'height'] 
                      return(x,y) 
                      try: 
                      #点击搜索 print(
                      '点击搜索') 
                      if WebDriverWait(driver,
                      60).until(
                      lambda x:x.find_element_by_xpath(
                      "//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.TabHost[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[2]/android.widget.FrameLayout[1]/android.widget.ImageView[1]")):
        driver.find_element_by_xpath(
                      "//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.TabHost[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[2]/android.widget.FrameLayout[1]/android.widget.ImageView[1]").click() 
                      except: 
                      #[26,76][115,165] driver.tap([(
                      26,
                      76),(
                      115,
                      165)],
                      500) 
                      #定位搜索框 
                      if WebDriverWait(driver,
                      60).until(
                      lambda x:x.find_element_by_xpath(
                      "//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.EditText[1]")): 
                      #获取douyin_id进行搜索 driver.find_element_by_xpath(
                      "//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.EditText[1]").send_keys(
                      '191433445') 
                      while driver.find_element_by_xpath(
                      "//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.EditText[1]").text != 
                      '191433445':
        driver.find_element_by_xpath(
                      "//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.EditText[1]").send_keys(
                      '191433445')
        time.sleep(
                      0.1) 
                      #点击搜索 driver.find_element_by_xpath(
                      "//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.TextView[1]").click() 
                      #点击用户标签 
                      if WebDriverWait(driver,
                      10).until(
                      lambda x:x.find_element_by_xpath(
                      "//android.widget.TextView[@text='用户']")):
    driver.find_element_by_xpath(
                      "//android.widget.TextView[@text='用户']").click() 
                      #点击头像 
                      if WebDriverWait(driver,
                      10).until(
                      lambda x:x.find_element_by_xpath(
                      "//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[2]/android.view.View[1]/android.support.v7.widget.RecyclerView[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ImageView[1]")):
    driver.find_element_by_xpath(
                      "//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[2]/android.view.View[1]/android.support.v7.widget.RecyclerView[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ImageView[1]").click() 
                      #点击粉丝按钮 
                      if WebDriverWait(driver,
                      10).until(
                      lambda x:x.find_element_by_xpath(
                      "//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.HorizontalScrollView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[5]/android.widget.LinearLayout[3]/android.widget.TextView[2]")):
    driver.find_element_by_xpath(
                      "//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.HorizontalScrollView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[5]/android.widget.LinearLayout[3]/android.widget.TextView[2]").click()
    x1 = int(driver.get_window_size()[
                      'width']*
                      0.5)
    y1 = int(driver.get_window_size()[
                      'height']*
                      0.75)
    y2 = int(driver.get_window_size()[
                      'height']*
                      0.25) 
                      while 
                      True: 
                      if 
                      '没有更多了' 
                      in driver.page_source: 
                      break driver.swipe(x1,y1,x1,y2)
        time.sleep(
                      0.5)PS:因用的是模拟器,导致电脑很卡,如果是真机就好些了,开启usb调试,通过adb devices,查看真机的名称,然后修改python的代码。 | 
                2019-06-10 09:41:12
              
 
            