某鱼app自动化发布闲置商品和浏览已发布的商品

  1. 导入必要的模块

    import time
    import subprocess
    from appium 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
    from appium.webdriver.common.touch_action import TouchAction
    
    • 这些模块用于执行自动化操作、发送ADB命令、启动Appium WebDriver等。
  2. 定义获取Android版本的函数

    def get_android_version():
        # 获取设备的 Android 版本
    
  3. 定义复制粘贴函数

    def copy_paste():
        # 执行复制粘贴操作
    
  4. 定义长按释放函数

    def long_press_release(driver, x, y, duration=2000):
        # adb长按2s后松开
  5. 定义向上滑屏函数

    def slide_screen(driver, start_x, start_y, end_x, end_y): # 向上滑屏
  6. 定义等待元素可点击并点击函数

    def wait_and_click(driver, locator, timeout=10): # 等待元素可点击并点击
  7. 定义输入文本函数

    def input_text(driver, locator, text): # 输入文本
  8. 定义启动Appium WebDriver函数

    def start_driver(): # 启动 Appium WebDriver
  9. 定义发布闲置商品函数

    def post_item(driver): # 发布闲置商品
  10. 定义点击坐标函数

    def click_xy(driver, x, y): # 点击坐标

完整代码如下:

import time
import subprocess
from appium 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
from appium.webdriver.common.touch_action import TouchAction

# 获取设备的 Android 版本
def get_android_version():
    adb_command = "adb shell getprop ro.build.version.release"
    result = subprocess.check_output(adb_command, shell=True)
    return result.decode('utf-8').strip()
def copy_paste():
    # 执行复制粘贴操作
    adb_copy_command = "adb shell input keyevent 279"  # 模拟按下复制键
    adb_paste_command = "adb shell input keyevent 278"  # 模拟按下粘贴键
    subprocess.run(adb_copy_command, shell=True)
    subprocess.run(adb_paste_command, shell=True)
# adb长按2s后松开
def long_press_release(driver, x, y, duration=2000):
    action = TouchAction(driver)
    action.long_press(x=x, y=y, duration=duration).release().perform()

# 向上滑屏
def slide_screen(driver, start_x, start_y, end_x, end_y):
    action = TouchAction(driver)
    action.press(x=start_x, y=start_y).wait(500).move_to(x=end_x, y=end_y).release().perform()


# 等待元素可点击并点击
def wait_and_click(driver, locator, timeout=10):
    element = WebDriverWait(driver, timeout).until(EC.element_to_be_clickable(locator))
    element.click()
    time.sleep(1)

# 输入文本
def input_text(driver, locator, text):
    element = WebDriverWait(driver, 10).until(EC.presence_of_element_located(locator))
    element.clear()
    element.send_keys(text)

# 启动 Appium WebDriver
def start_driver():
    desired_caps = {
        "platformName": "Android",
        "platformVersion": get_android_version(),
        "deviceName": "Xiaomi",
        'appPackage': "com.taobao.idlefish",
        'appActivity': 'com.taobao.fleamarket.home.activity.InitActivity',
        'autoGrantPermissions': True,
        'noReset': True,
    }
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    driver.implicitly_wait(10)
    return driver

# 发布闲置商品
def post_item(driver):
    wait_and_click(driver, (By.XPATH, '//*[@resource-id="com.taobao.idlefish:id/post_container"]/android.widget.FrameLayout[1]'))

    click_xy(driver, 973, 1238)   # wait_and_click(driver, (By.XPATH, '//*[@content-desc="发闲置 30s发布宝贝"]'))
    time.sleep(1)
    while True:
        click_xy(driver, 117, 302)  # # input_text(driver, (By.XPATH, '//*[@content-desc="描述, 描述一下宝贝的品牌型号、货品来源…"]/android.view.View[1]'), "1171637509@qq.com")
        # copy_paste()
        # time.sleep(1)
        long_press_release(driver, 117, 302)
        wait_and_click(driver, (By.XPATH, '//*[@content-desc="粘贴"]'))
        slide_screen(driver, 460, 900, 460, 800)

        wait_and_click(driver, (By.XPATH, '//*[@content-desc="添加图片"]'))
        click_xy(driver, 330, 2280)
        click_xy(driver, 502, 278)  #点视频
        click_xy(driver, 941, 2272) #点完成

        # wait_and_click(driver, (By.XPATH,'//*[@resource-id="android:id/content"]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[2]/android.view.View[1]/android.widget.ImageView[2]/android.view.View[1]'))
        # click_xy(driver, 752, 278)
        # click_xy(driver, 1020, 278)
        # wait_and_click(driver, (By.XPATH,
        #                         '//*[@resource-id="android:id/content"]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[2]/android.view.View[1]/android.widget.ImageView[3]/android.view.View[1]'))
        # wait_and_click(driver, (By.XPATH,
        #                         '//*[@resource-id="android:id/content"]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[2]/android.view.View[1]/android.widget.ImageView[4]/android.view.View[1]'))

        # wait_and_click(driver, (By.XPATH, '//*[@content-desc="下一步 (3)"]'))

        # wait_and_click(driver, (By.XPATH, '//*[@content-desc="完成"]'))
        # time.sleep(2)
        # wait_and_click(driver, (By.XPATH, '//*[@content-desc="软件产品设计"]'))
        # wait_and_click(driver, (By.XPATH, '//*[@content-desc="元/次"]'))
        set_price(driver)
        publish_item(driver)

# 点击坐标
def click_xy(driver, x, y):
    driver.tap([(x, y)])
    time.sleep(1)

# 设置价格
def set_price(driver):
    wait_and_click(driver, (By.XPATH, '//*[@content-desc="价格设置"]'))
    wait_and_click(driver, (By.XPATH, '//*[@content-desc="9"]'))
    wait_and_click(driver, (By.XPATH, '//*[@content-desc="原价设置"]'))
    wait_and_click(driver, (By.XPATH, '//*[@content-desc="9"]'))
    wait_and_click(driver, (By.XPATH, '//*[@content-desc="9"]'))
    wait_and_click(driver, (By.XPATH, '//*[@content-desc="确定"]'))

# 发布商品
def publish_item(driver):
    wait_and_click(driver, (By.XPATH, '//*[@content-desc="发布"]'))
    wait_and_click(driver, (By.XPATH, '//*[@content-desc="再发一件"]'))

def liulanliang(driver):
    click_xy(driver, 956, 2292)#我的
    click_xy(driver, 149, 861)#我发布的
    time.sleep(1)
    num=0
    while num<1000:
        click_xy(driver, 129, 1250)#发布首列商品
        time.sleep(0.6)
        click_xy(driver, 58, 151)#返回
        time.sleep(0.6)
        num=num+1
        print(num)
        # wait_and_click(driver, (By.XPATH, '//*[@content-desc="我发布的 卖家宝典 今日曝光 指今天宝贝被看到多少次 越多人看到,越容易卖出哦~ 我知道啦"]/android.widget.ImageView[1]'))
    driver = start_driver()
    liulanliang(driver)

# 主程序
if __name__ == "__main__":
    driver = start_driver()
    # post_item(driver)
    liulanliang(driver)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值