def loginApp(driver, buyCodePath): typePath = '/hierarchy/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.Button[2]' if isExist(driver, 2, typePath): driver.find_element_by_xpath(typePath).click() sleep(1) pwdPath = '/hierarchy/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout[1]/android.widget.EditText' driver.find_element_by_xpath(pwdPath).click() sleep(1) pwd = getPwd('fangDe')['logInPwd'] getKeyCode(driver, pwd) sleep(1) loginPath = '/hierarchy/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.Button' driver.find_element_by_xpath(loginPath).click() sleep(1) agreePath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.Button[2]' driver.find_element_by_xpath(agreePath).click() sleep(1) driver.find_element_by_xpath(buyCodePath).click() sleep(1) tradePwdPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout[1]/android.widget.EditText' if isExist(driver, 2, tradePwdPath): driver.find_element_by_xpath(tradePwdPath).click() sleep(1) pwd = getPwd('fangDe')['tradePwd'] getKeyCode(driver, pwd) sleep(1) loginPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout[2]/android.widget.Button' driver.find_element_by_xpath(loginPath).click() sleep(1)
def loginYingLi(driver): cancelId = 'com.yxzq.stock:id/iv_close' cancelIdNext = 'com.yxzq.stock:id/ic_close' if isExist(driver, 4, cancelId): driver.find_element_by_id(cancelId).click() sleep(1) if isExist(driver, 4, cancelIdNext): driver.find_element_by_id(cancelIdNext).click() sleep(1)
def openZhangeLe(driver): closePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.ImageView' if isExist(driver, 2,closePath): driver.find_element_by_xpath(closePath).click() sleep(1) if isExist(driver, 4,'com.lphtsccft.zlqqt2:id/pending_open'): driver.find_element_by_id('com.lphtsccft.zlqqt2:id/pending_open').click() sleep(1) if isExist(driver, 4,'com.lphtsccft.zlqqt2:id/ipo_dialog_close'): driver.find_element_by_id('com.lphtsccft.zlqqt2:id/pending_open').click() sleep(1)
def buyFuYuan(param): code = param['code'] isCash = param['isCash'] stockNumVal = param['numVal'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.sunline.android.sunline' settingData['appActivity'] = '.DefaultAlias' desired_caps = settingData driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.close_app() sleep(3) driver.launch_app() sleep(5) if isExist(driver, 4, 'com.sunline.android.sunline:id/cancel'): driver.find_element_by_id( 'com.sunline.android.sunline:id/cancel').click() sleep(1) tipPath = 'new UiSelector().text("我知道了")' if isExist(driver, 1, tipPath): driver.find_element_by_android_uiautomator(tipPath).click() sleep(1) driver.find_element_by_android_uiautomator( 'new UiSelector().text("交易")').click() sleep(2) driver.find_element_by_android_uiautomator( 'new UiSelector().text("新股认购")').click() sleep(1) driver.find_element_by_android_uiautomator( 'new UiSelector().text("可认购")').click() sleep(1) # contentPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout[2]/android.support.v4.view.ViewPager/android.widget.ScrollView/android.widget.ViewSwitcher/android.widget.RelativeLayout/android.support.v7.widget.RecyclerView/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout' # contentView = driver.find_element_by_xpath(contentPath) titlePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout[2]/android.support.v4.view.ViewPager/android.widget.ScrollView/android.widget.ViewSwitcher/android.widget.RelativeLayout/android.support.v7.widget.RecyclerView/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.TextView[2]' title = driver.find_element_by_xpath(titlePath).text if code in title: buyPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout[2]/android.support.v4.view.ViewPager/android.widget.ScrollView/android.widget.ViewSwitcher/android.widget.RelativeLayout/android.support.v7.widget.RecyclerView/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.Button' driver.find_element_by_xpath(buyPath).click() sleep(1) pwd = getPwd('fuYuan')['tradePwd'] getKeyCode(driver, pwd) confirmId = 'com.sunline.android.sunline:id/btn_purchase' end = driver.find_element_by_id(confirmId).text print(end) sleep(20) driver.quit()
def getZhangeLeProperty(param): settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.lphtsccft.zlqqt2' settingData['appActivity'] = 'com.lphtsccft.zhangle.startup.SplashScreenActivity' desired_caps = settingData driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.close_app(); sleep(3) driver.launch_app(); sleep(10) openZhangeLe(driver) driver.find_element_by_id('com.lphtsccft.zlqqt2:id/main_account').click() sleep(2) propertyPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.View/android.view.View/android.view.View/android.view.View[1]/android.widget.ScrollView/android.view.View/android.view.View/android.view.View/android.view.View[1]/android.view.View[5]' if isExist(driver, 2, propertyPath): driver.find_element_by_xpath(propertyPath).click() sleep(1) pwd = getPwd('zhangLe')['tradePwd'] pwdId = 'com.lphtsccft.zlqqt2:id/login_et_password' driver.find_element_by_id(pwdId).send_keys(pwd) driver.find_element_by_id('com.lphtsccft.zlqqt2:id/login_btn_login_account').click() sleep(10)
def loginApp(driver, *others): pwdPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.LinearLayout[1]/android.widget.LinearLayout/android.widget.EditText' if isExist(driver, 2, pwdPath): driver.find_element_by_xpath(pwdPath).click() sleep(1) pwd = getPwd('ruiFeng')['logInPwd'] getKeyCode(driver, pwd) sleep(1) confirmPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.Button' driver.find_element_by_xpath(confirmPath).click() sleep(2) if others: lastPath = others[0] if isExist(driver, 2, lastPath): driver.find_element_by_xpath(lastPath).click() sleep(1)
def getFuTuProperty(param): settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'cn.futu.trader' settingData['appActivity'] = '.launch.activity.LaunchActivity' desired_caps = settingData driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.close_app() sleep(3) driver.launch_app() sleep(5) closeId = 'cn.futu.trader:id/close_popup_ad_view' if isExist(driver, 4, closeId): driver.find_element_by_id(closeId).click() driver.find_element_by_android_uiautomator( 'new UiSelector().text("今日盈亏")').click() sleep(1) allPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout[2]/android.widget.TextView' allNum = driver.find_element_by_xpath(allPath).text availablePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout[1]/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.view.ViewGroup/android.widget.LinearLayout[2]/android.widget.TextView' availableNum = driver.find_element_by_xpath(availablePath).text param = { 'method': 0, 'tableName': 'fuTu0', 'allNum': allNum, 'availableNum': availableNum, } initMysql(param) driver.quit()
def getTigerProperty(param): settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.tigerbrokers.stock' settingData['appActivity'] = '.ui.StartupActivity' desired_caps = settingData driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.close_app() sleep(3) driver.launch_app() sleep(5) loginTiger(driver) driver.find_element_by_android_uiautomator( 'new UiSelector().text("交易")').click() sleep(2) if isExist(driver, 4, 'com.tigerbrokers.stock:id/btn_cancel'): driver.find_element_by_id( 'com.tigerbrokers.stock:id/btn_cancel').click() sleep(1) allId = 'com.tigerbrokers.stock:id/text_asset_total' allNum = str( float('%.2f' % (float(driver.find_element_by_id(allId).text.replace(',', '')) * 7.7))) availableId = 'com.tigerbrokers.stock:id/text_assets_value_left' availableNum = driver.find_element_by_id(availableId).text param = { 'method': 0, 'tableName': 'tiger0', 'allNum': allNum, 'availableNum': availableNum, } initMysql(param) driver.quit()
def getfuYuanProperty(param): settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.sunline.android.sunline' settingData['appActivity'] = '.DefaultAlias' desired_caps = settingData driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.close_app() sleep(3) driver.launch_app() sleep(5) if isExist(driver, 4, 'com.sunline.android.sunline:id/cancel'): driver.find_element_by_id( 'com.sunline.android.sunline:id/cancel').click() sleep(1) driver.find_element_by_android_uiautomator( 'new UiSelector().text("交易")').click() sleep(2) allPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.view.ViewGroup/android.widget.ScrollView/android.widget.LinearLayout/android.widget.LinearLayout[1]/android.widget.RelativeLayout/android.widget.TextView' allNum = driver.find_element_by_xpath(allPath).text availablePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.view.ViewGroup/android.widget.ScrollView/android.widget.LinearLayout/android.widget.LinearLayout[2]/android.widget.LinearLayout[1]/android.widget.LinearLayout[2]/android.widget.TextView[2]' availableNum = numFromStr(driver.find_element_by_xpath(availablePath).text) param = { 'method': 0, 'tableName': 'fuYuan0', 'allNum': allNum, 'availableNum': availableNum, } initMysql(param) driver.quit()
def operateZhaoShang(param): code = param['code'] isCash = param['isCash'] stockNumVal = param['numVal'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.cmschina.stock' settingData['appActivity'] = '.InitActivity' desired_caps = settingData driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.close_app() sleep(3) driver.launch_app() sleep(5) driver.find_element_by_android_uiautomator( 'new UiSelector().text("交易")').click() sleep(1) logPath = 'new UiSelector().text("登录查看")' if isExist(driver, 1, logPath): driver.find_element_by_android_uiautomator(logPath).click() sleep(3) print(driver.page_source) print(driver.contexts) pwdPatha = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout[2]/android.widget.EditText' driver.find_element_by_xpath(pwdPatha).send_keys(1)
def loginDongCai(driver): if isExist(driver, 4, 'com.eastmoney.android.lead:id/riv_card'): driver.find_element_by_id( 'com.eastmoney.android.lead:id/riv_card').click() sleep(1) driver.find_element_by_android_uiautomator( 'new UiSelector().text("关闭")').click() sleep(1)
def loginZhangeLe(driver): pwd = getPwd('zhangLe')['tradePwd'] pwdId = 'com.lphtsccft.zlqqt2:id/login_et_password' if isExist(driver, 4, pwdId): driver.find_element_by_id(pwdId).send_keys(pwd) driver.find_element_by_id('com.lphtsccft.zlqqt2:id/login_btn_login_account').click()
def buyTiger(param): code = param['code'] isCash = param['isCash'] stockNumVal = param['numVal'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.tigerbrokers.stock' settingData['appActivity'] = '.ui.StartupActivity' desired_caps = settingData # desired_caps = { # 'platformName':'Android', # 'platformVersion':'10', # 'deviceName':'2214c691', # 'appPackage':'com.tigerbrokers.stock', # 'noReset':True, # 'appActivity':'.ui.StartupActivity', # } driver = webdriver.Remote('http://*****:*****@text,"(' + code + '.HK)")]/parent::*/following-sibling::android.widget.LinearLayout[1]/android.widget.RelativeLayout/android.widget.TextView' # driver.find_element_by_xpath(buyPath).click() # sleep(1) # if not isCash: # driver.find_element_by_id('com.juniorchina.jcstock:id/iv_margin').click() # numPath = 'new UiSelector().textContains("%d")'%(stockNum) # driver.find_element_by_android_uiautomator(numPath).click() # sleep(1) driver.quit()
def buyDongCai(param): code = param['code'] isCash = param['isCash'] stockNumVal = param['numVal'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.eastmoney.android.lead' settingData['appActivity'] = 'com.eastmoney.android.berlin.activity.MainActivity' desired_caps = settingData # desired_caps = { # 'platformName':'Android', # 'platformVersion':'10', # 'deviceName':'2214c691', # 'appPackage':'com.eastmoney.android.lead', # 'noReset':True, # 'appActivity':'com.eastmoney.android.berlin.activity.MainActivity', # } driver = webdriver.Remote('http://*****:*****@text, "认购中")]').click() sleep(1) # if isExist(driver,'com.tigerbrokers.stock:id/btn_cancel') : # driver.find_element_by_id('com.tigerbrokers.stock:id/btn_cancel').click() # sleep(1) # driver.find_element_by_android_uiautomator('new UiSelector().text("IPO")').click() # sleep(1) # driver.find_element_by_android_uiautomator('new UiSelector().text("港股")').click() # sleep(1) # buyPath='//android.widget.TextView[contains(@text,"(' + code + '.HK)")]/parent::*/following-sibling::android.widget.LinearLayout[1]/android.widget.RelativeLayout/android.widget.TextView' # driver.find_element_by_xpath(buyPath).click() # sleep(1) # if not isCash: # driver.find_element_by_id('com.juniorchina.jcstock:id/iv_margin').click() # numPath = 'new UiSelector().textContains("%d")'%(stockNum) # driver.find_element_by_android_uiautomator(numPath).click() # sleep(1) driver.quit()
def getHuaShengTongProperty(param): settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.huasheng.stock' settingData['appActivity'] = 'com.hstong.app.launch.ui.Loading' desired_caps = settingData driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.close_app() sleep(3) driver.launch_app() sleep(6) if isExist(driver, 4, 'com.huasheng.stock:id/button_cancel'): driver.find_element_by_id( 'com.huasheng.stock:id/button_cancel').click() if isExist(driver, 4, 'com.huasheng.stock:id/btn_close'): driver.find_element_by_id('com.huasheng.stock:id/btn_close').click() driver.find_element_by_android_uiautomator( 'new UiSelector().text("交易")').click() sleep(1) if isExist(driver, 3, 'android.widget.EditText'): pwd = getPwd('huaShengTong')['tradePwd'] driver.find_element_by_class_name('android.widget.EditText').send_keys( pwd) driver.find_element_by_id('com.huasheng.stock:id/btn_login').click() sleep(5) allPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView[2]' allNum = driver.find_element_by_xpath(allPath).text availablePath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/android.widget.FrameLayout[1]/android.view.ViewGroup/android.widget.LinearLayout[2]/android.widget.TextView[2]' availableNum = driver.find_element_by_xpath(availablePath).text param = { 'method': 0, 'tableName': 'huaShengTong0', 'allNum': allNum, 'availableNum': availableNum, } initMysql(param) driver.quit() print(allNum) print(availableNum)
def tradeFuTu(param): driver = initFuTu(param) searchPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout[1]/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.view.ViewGroup/android.support.v7.widget.LinearLayoutCompat/android.widget.FrameLayout[2]/android.widget.ImageView' if not isExist(driver, 2, searchPath): searchPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.view.ViewGroup/android.support.v7.widget.LinearLayoutCompat/android.widget.FrameLayout[1]/android.widget.ImageView' driver.find_element_by_xpath(searchPath).click() sleep(1) code = param['code'] getKeyCode(driver, code) sleep(4) recordFlag = True while recordFlag: stockPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout[2]/android.widget.FrameLayout/android.view.ViewGroup/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.view.ViewGroup/android.support.v7.widget.RecyclerView/android.view.ViewGroup' driver.find_element_by_xpath(stockPath).click() sleep(1) recordFlag = recordPrice(driver, param) sleep(10)
def buyFuYuan(param): code = param['code'] isCash = param['isCash'] stockNumVal = param['numVal'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.sunline.android.sunline' settingData['appActivity'] = '.DefaultAlias' desired_caps = settingData # desired_caps = { # 'platformName':'Android', # 'platformVersion':'10', # 'deviceName':'2214c691', # 'appPackage':'com.sunline.android.sunline', # 'noReset':True, # 'appActivity':'.DefaultAlias', # 'automationName':'uiautomator2' # } driver = webdriver.Remote('http://*****:*****@text,"(' + code + '.HK)")]/parent::*/following-sibling::android.widget.LinearLayout[1]/android.widget.RelativeLayout/android.widget.TextView' # driver.find_element_by_xpath(buyPath).click() # sleep(1) # if not isCash: # driver.find_element_by_id('com.juniorchina.jcstock:id/iv_margin').click() # numPath = 'new UiSelector().textContains("%d")'%(stockNum) # driver.find_element_by_android_uiautomator(numPath).click() # sleep(1) driver.quit()
def buyAiDe(param): code = param['code'] isCash = param['isCash'] stockNumVal = param['numVal'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'io.newtype.eddid.app' settingData['appActivity'] = 'com.eddid.home.ui.activity.LauncherActivity' desired_caps = settingData driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.close_app(); sleep(3) driver.launch_app(); sleep(6) tipId = 'io.newtype.eddid.app:id/tv_notice_dialog_no_reminder' if isExist(driver, 4, tipId): driver.find_element_by_id(tipId).click() sleep(1) driver.find_element_by_android_uiautomator('new UiSelector().text("新股中心")').click() sleep(5) contentPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View/android.view.View[9]/android.view.View/android.view.View/android.view.View[1]/android.view.View/android.view.View' contentView = driver.find_elements_by_xpath(contentPath) contentLen = len(contentView) -2 for i in range(contentLen): index = str(i + 2) titlePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View/android.view.View[9]/android.view.View/android.view.View/android.view.View[1]/android.view.View/android.view.View[' + index +']/android.view.View[1]' itemTitle = driver.find_element_by_xpath(titlePath).text if code in itemTitle: buyPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View/android.view.View[9]/android.view.View/android.view.View/android.view.View[1]/android.view.View/android.view.View[' + index +']/android.view.View[2]' driver.find_element_by_xpath(buyPath).click() sleep(2) confirmPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View/android.view.View[6]/android.widget.Button' confirmBtn = driver.find_element_by_xpath(confirmPath).text print(confirmBtn) sleep(5) driver.quit()
def initApp(driver): closePath = '//android.widget.Button[@content-desc="closeImage"]' if isExist(driver, 2, closePath): driver.find_element_by_xpath(closePath).click() sleep(1)
def initApp(driver): closePath = '(//android.widget.ImageView[@content-desc="方德港美股"])[2]' if isExist(driver, 2, closePath): driver.find_element_by_xpath(closePath).click() sleep(1)
def buyZunJia(param): code = param['code'] isCash = param['isCash'] stockNum = param['num'] # stockNumVal = param['numVal'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.juniorchina.jcstock' settingData['appActivity'] = '.SplashActivity' desired_caps = settingData # desired_caps = { # 'platformName':'Android', # 'platformVersion':'10', # 'deviceName':'2214c691', # 'appPackage':'com.juniorchina.jcstock', # 'noReset':True, # 'appActivity':'.SplashActivity', # # 'newCommandTimeout':0, # 'automationName':'uiautomator2' # } driver = webdriver.Remote('http://*****:*****@text,"(' + code + '.HK)")]/parent::*/following-sibling::android.widget.LinearLayout[1]/android.widget.RelativeLayout/android.widget.TextView' if isExist(driver, 2, buyPath): driver.find_element_by_xpath(buyPath).click() sleep(1) if not isCash: driver.find_element_by_id( 'com.juniorchina.jcstock:id/iv_margin').click() sleep(1) if isCashAll or isFinancingAll: maxPath = '//android.widget.TextView[@text="可用资金不足"]/parent::*/parent::*/preceding-sibling::android.widget.LinearLayout[1]/android.widget.LinearLayout/android.widget.TextView' maxExistPath = '//*[@text="可用资金不足"]' while not isExist(driver, 2, maxExistPath): driver.swipe(200, 500, 200, 100, 300) maxView = driver.find_element_by_xpath(maxPath) maxNum = maxView.text maxView.click() else: numPath = 'new UiSelector().textContains("%d")' % (stockNum) if isExist(driver, 1, numPath): driver.find_element_by_android_uiautomator(numPath).click() sleep(1) driver.find_element_by_id('com.juniorchina.jcstock:id/tv_ok').click() # driver.find_element_by_id('com.juniorchina.jcstock:id/tv_cancel').click() pwd = getPwd('zunJia')['tradePwd'] driver.find_element_by_id( 'com.juniorchina.jcstock:id/et_password').send_keys(pwd) driver.find_element_by_id( 'com.juniorchina.jcstock:id/layout_commit').click() sleep(3) driver.quit()
def buyDongCai(param): code = param['code'] isCash = param['isCash'] stockNum = param['num'] # stockNumVal = param['numVal'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.eastmoney.android.lead' settingData[ 'appActivity'] = 'com.eastmoney.android.berlin.activity.MainActivity' desired_caps = settingData driver = webdriver.Remote('http://*****:*****@text, "认购中")]').click() sleep(1) codeText = 'new UiSelector().text("' + code + '")' codeParentView = driver.find_element_by_android_uiautomator( codeText).parent codeParentView.find_element_by_android_uiautomator( 'new UiSelector().text("认购")').click() sleep(1) pwd = getPwd('dongCai')['tradePwd'] print(pwd) getKeyCode(driver, pwd) sleep(3) if isCash: cashText = 'new UiSelector().text("现金")' driver.find_element_by_android_uiautomator(cashText).click() amountChooseUi = 'new UiSelector().text("请选择认购股数")' driver.find_element_by_android_uiautomator(amountChooseUi).click() sleep(1) amountFlag = True amountCheckIndex = '' while amountFlag: amountViewPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup' amountView = driver.find_elements_by_xpath(amountViewPath) amountLen = len(amountView) - 1 print(amountLen) for i in range(amountLen): index = str(i + 1) print(index) if isCashAll: amountOutText = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[' + index + ']/android.view.ViewGroup/android.widget.TextView[2]' if isExist(driver, 2, amountOutText): amountFlag = False amountCheckIndex = str(i) break elif isCash: amountTextPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[' + index + ']/android.view.ViewGroup/android.widget.TextView' amountText = driver.find_element_by_xpath(amountTextPath).text if stockNum in amountText: amountFlag = False amountCheckIndex = str(i + 1) break elif isFinancingAll: testUi = 'new UiSelector().textContains("不足")' if isExist(amountView[i], 1, testUi): test = amountView[i].find_element_by_android_uiautomator( 'new UiSelector().textContains("不足")').text print(test) amountFlag = False amountCheckIndex = str(i) break else: amountTextPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[' + index + ']/android.view.ViewGroup/android.widget.TextView' amountText = driver.find_element_by_xpath(amountTextPath).text if stockNum in amountText: amountFlag = False amountCheckIndex = str(i + 1) break if amountFlag: driver.swipe(200, 1760, 200, 1610, 300) sleep(1) amountCheckPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[' + amountCheckIndex + ']/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup' print(amountCheckPath) driver.find_element_by_xpath(amountCheckPath).click() sleep(1) agreePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[1]/android.view.ViewGroup/android.view.ViewGroup[1]' driver.find_element_by_xpath(agreePath).click() sleep(1) confirmPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.widget.TextView' driver.find_element_by_xpath(confirmPath).click() sleep(1) submitUi = 'new UiSelector().textContains("确认认购")' driver.find_element_by_android_uiautomator(submitUi).click() sleep(1) pwd = getPwd('dongCai')['tradePwd'] print(pwd) getKeyCode(driver, pwd) sleep(1) endUi = 'new UiSelector().text("确认")' if isExist(driver, 1, endUi): driver.find_element_by_android_uiautomator(endUi).click() sleep(3) driver.quit()
def loginTiger(driver): if isExist(driver, 4, 'com.tigerbrokers.stock:id/btn_cancel'): driver.find_element_by_id( 'com.tigerbrokers.stock:id/btn_cancel').click() sleep(1)
def buyHuaShengTong(param): code = param['code'] isCash = param['isCash'] stockNumVal = param['numVal'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.huasheng.stock' settingData['appActivity'] = 'com.hstong.app.launch.ui.Loading' desired_caps = settingData # desired_caps = { # 'platformName':'Android', # 'platformVersion':'10', # 'deviceName':'2214c691', # 'appPackage':'com.huasheng.stock', # 'noReset':True, # 'appActivity':'com.hstong.app.launch.ui.Loading', # } driver = webdriver.Remote('http://*****:*****@text, "' + code + '")]' codePath = '//android.widget.TextView[contains(@text, "' + code + '")]/parent::*/parent::*/parent::*/following-sibling::android.widget.LinearLayout[4]/android.widget.TextView' if isExist(driver, 2, codeExitPath): codeBtn = driver.find_element_by_xpath(codePath) codeBtn.click() sleep(8) print(driver.page_source) if not isCash: financingPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/com.tencent.tbs.core.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View/android.view.View[2]/android.widget.ListView[1]/android.view.View[2]' driver.find_element_by_xpath(financingPath).click() sleep(1) choosePath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/com.tencent.tbs.core.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View/android.view.View[2]/android.view.View[2]' driver.find_element_by_xpath(choosePath).click() sleep(1) maxExistPath = '//android.view.View[contains(@text, "存入资金")]' if isCashAll or isFinancingAll: while not isExist(driver, 2, maxExistPath): driver.swipe(200, 1600, 200, 1300, 300) maxPath = '//android.view.View[contains(@text, "存入资金")]/parent::*/parent::*/preceding-sibling::android.view.View[1]/android.view.View' driver.find_element_by_xpath(maxPath).click() sleep(1) else: num = str(numFromStr(stockNumVal)) numPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/com.tencent.tbs.core.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View[4]/android.view.View/android.widget.ListView[2]/android.view.View[' + num + ']/android.view.View[1]' driver.find_element_by_xpath(numPath).click() sleep(1) finishPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/com.tencent.tbs.core.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[2]/android.view.View[2]' driver.find_element_by_xpath(finishPath).click() sleep(2) agreePath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/com.tencent.tbs.core.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[2]/android.view.View[1]/android.view.View/android.view.View[1]' agreeBox = driver.find_element_by_xpath(agreePath) agreeBox.click() confirmPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/com.tencent.tbs.core.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[2]/android.view.View[2]' driver.find_element_by_xpath(confirmPath).click() sleep(5) driver.quit()
def buyTiger(param): code = param['code'] isCash = param['isCash'] # stockNumVal = param['numVal'] stockNum = param['num'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.tigerbrokers.stock' settingData['appActivity'] = '.ui.StartupActivity' desired_caps = settingData driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.close_app() sleep(3) driver.launch_app() sleep(5) loginTiger(driver) if isExist(driver, 4, 'com.tigerbrokers.stock:id/btn_cancel'): driver.find_element_by_id( 'com.tigerbrokers.stock:id/btn_cancel').click() sleep(1) driver.find_element_by_android_uiautomator( 'new UiSelector().text("交易")').click() sleep(2) driver.find_element_by_android_uiautomator( 'new UiSelector().text("IPO")').click() sleep(3) print(driver.page_source) hkStockPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[2]/android.view.View[2]' driver.find_element_by_xpath(hkStockPath).click() sleep(1) contentPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[9]/android.view.View' contentView = driver.find_elements_by_xpath(contentPath) contentLen = len(contentView) for i in range(contentLen): if contentLen > 0: index = '[' + str(i + 1) + ']' else: index = '' titlePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[9]/android.view.View' + index + '/android.view.View[1]/android.widget.TextView[2]' titlePathNext = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[9]/android.view.View' + index + '/android.view.View[1]' if isExist(driver, 2, titlePath): itemTitle = driver.find_element_by_xpath(titlePath).text else: itemTitle = driver.find_element_by_xpath(titlePathNext).text if code in itemTitle: buyPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[9]/android.view.View' + index + '/android.view.View[9]/android.widget.Button[2]' driver.find_element_by_xpath(buyPath).click() sleep(2) immediatePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[20]/android.widget.Button' driver.find_element_by_xpath(immediatePath).click() sleep(2) if isCash: typePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[6]' driver.find_element_by_xpath(typePath).click() sleep(1) typeValPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[2]/android.view.View/android.view.View[1]/android.view.View[2]' typeVal = driver.find_element_by_xpath(typeValPath).text typeIndex = -1 if '现金' in typeVal: typeIndex = str(1) else: typeIndex = str(2) typeChoosePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[2]/android.view.View/android.view.View[' + typeIndex + ']/android.view.View[1]/android.view.View' driver.find_element_by_xpath(typeChoosePath).click() sleep(1) typeConfirmPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[2]/android.widget.Button' driver.find_element_by_xpath(typeConfirmPath).click() sleep(1) amountChoosePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View[10]' driver.find_element_by_xpath(amountChoosePath).click() sleep(1) amountFlag = True while amountFlag: amountViewPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[3]/android.view.View' amountView = driver.find_elements_by_xpath(amountViewPath) amountViewLen = len(amountView) - 3 for i in range(amountViewLen): amountIndex = str(i + 1) amountPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[3]/android.view.View[' + amountIndex + ']/android.view.View[1]' amountText = driver.find_element_by_xpath(amountPath).text if isCashAll: if '最大' in amountText: amountFlag = False else: if stockNum in amountText: amountFlag = False if not amountFlag: amountCheckPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[3]/android.view.View[' + amountIndex + ']/android.view.View[3]/android.view.View/android.view.View/android.view.View' driver.find_element_by_xpath(amountCheckPath).click() sleep(1) break if amountFlag: driver.swipe(200, 1760, 200, 1600, 300) amountConfirmPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.widget.Button' driver.find_element_by_xpath(amountConfirmPath).click() sleep(1) driver.swipe(200, 1760, 200, 1000, 300) confirmPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.widget.Button' driver.find_element_by_xpath(confirmPath).click() sleep(1) agreePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[11]/android.widget.CheckBox' driver.find_element_by_xpath(agreePath).click() sleep(1) submitPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.widget.Button[2]' # driver.find_element_by_xpath(submitPath).click() test = driver.find_element_by_xpath(submitPath).text sleep(1) else: financePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[9]/android.view.View' driver.find_element_by_xpath(financePath).click() sleep(2) fifteenPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[2]/android.view.View/android.view.View[2]/android.view.View[1]/android.view.View' driver.find_element_by_xpath(fifteenPath).click() sleep(1) financeTypeConfirm = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[2]/android.widget.Button' driver.find_element_by_xpath(financeTypeConfirm).click() sleep(1) amountChoose = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View[13]/android.view.View' driver.find_element_by_xpath(amountChoose).click() sleep(1) amountFlag = True while (amountFlag): amountViewPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[3]/android.view.View' amountView = driver.find_elements_by_xpath(amountViewPath) amountLen = len(amountView) - 3 print(amountLen) for i in range(amountLen): index = str(i + 1) amountPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[3]/android.view.View[' + index + ']/android.view.View[1]' amountText = driver.find_element_by_xpath(amountPath).text print(amountText) if '最大' in amountText: amountFlag = False amountCheckPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[3]/android.view.View[' + index + ']/android.view.View[3]/android.view.View/android.view.View/android.view.View' driver.find_element_by_xpath(amountCheckPath).click() sleep(1) if amountFlag: driver.swipe(200, 1760, 200, 1600, 300) amountConfirm = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.widget.Button' driver.find_element_by_xpath(amountConfirm).click() sleep(1) driver.swipe(200, 1760, 200, 1000, 300) confirmPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.widget.Button' driver.find_element_by_xpath(confirmPath).click() sleep(1) agreePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.view.View[12]/android.widget.CheckBox' driver.find_element_by_xpath(agreePath).click() sleep(1) submitPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.widget.Button[2]' driver.find_element_by_xpath(submitPath).click() sleep(1) stockPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.app.Dialog/android.view.View/android.view.View/android.widget.Button[2]' driver.find_element_by_xpath(stockPath).click() sleep(10) driver.quit()
def buyYaoCai(param): code = param['code'] isCash = param['isCash'] stockNumVal = param['numVal'] stockNum = param['num'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.brightsmart.android.etnet' settingData['appActivity'] = 'com.etnet.android.iq.Welcome' desired_caps = settingData driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.close_app() sleep(3) driver.launch_app() sleep(5) tradePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RadioGroup/android.widget.RadioButton[5]' driver.find_element_by_xpath(tradePath).click() sleep(1) loginYaoCai(driver) ipoPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RadioGroup/android.widget.RadioButton[4]' driver.find_element_by_xpath(ipoPath).click() sleep(5) codeListPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.widget.ScrollView/android.webkit.WebView/android.webkit.WebView/android.view.View[2]/android.view.View' codeListView = driver.find_elements_by_xpath(codeListPath) codeLen = len(codeListView) for i in range(codeLen): index = str(i + 1) codePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.widget.ScrollView/android.webkit.WebView/android.webkit.WebView/android.view.View[2]/android.view.View[1]/android.view.View[' + index + ']/android.view.View[1]' codeText = driver.find_element_by_xpath(codePath).text print(codeText) print(code in codeText) if code in codeText: buyPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.widget.ScrollView/android.webkit.WebView/android.webkit.WebView/android.view.View[2]/android.view.View[' + index + ']/android.view.View[4]/android.view.View[2]/android.view.View' driver.find_element_by_xpath(buyPath).click() sleep(4) break driver.swipe(200, 2100, 200, 1000, 300) sleep(1) agreePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.widget.ScrollView/android.webkit.WebView/android.webkit.WebView/android.view.View[2]/android.view.View/android.view.View[11]/android.view.View/android.view.View/android.view.View[1]' driver.find_element_by_xpath(agreePath).click() sleep(4) print(driver.page_source) applyPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.widget.ScrollView/android.webkit.WebView/android.webkit.WebView/android.view.View[3]/android.widget.GridView[1]/android.view.View[12]/android.view.View[1]/android.widget.Button' if not isCash: financePath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.widget.ScrollView/android.webkit.WebView/android.webkit.WebView/android.view.View[3]/android.widget.GridView[1]/android.view.View[6]/android.view.View[2]/android.widget.RadioButton[2]' if isExist(driver, 2, financePath): driver.find_element_by_xpath(financePath).click() sleep(1) applyPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.widget.ScrollView/android.webkit.WebView/android.webkit.WebView/android.view.View[3]/android.widget.GridView/android.view.View[16]/android.view.View[1]/android.widget.Button' amountFlagPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.widget.ScrollView/android.webkit.WebView/android.webkit.WebView/android.view.View[3]/android.widget.GridView[1]/android.view.View[7]/android.view.View[2]/android.widget.Spinner' amountFlagPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.widget.ScrollView/android.webkit.WebView/android.webkit.WebView/android.view.View[3]/android.widget.GridView[1]/android.view.View[7]/android.view.View[2]/android.widget.Spinner' if not isExist(driver, 2, amountFlagPath): amountFlagPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.widget.ScrollView/android.webkit.WebView/android.webkit.WebView/android.view.View[3]/android.widget.GridView[1]/android.view.View[6]/android.view.View[2]/android.widget.Spinner' amountInitText = driver.find_element_by_xpath(amountFlagPath).text print(amountInitText) if not isFinancingAll: if amountInitText != stockNum: driver.find_element_by_xpath(amountFlagPath).click() sleep(1) print(applyPath) driver.find_element_by_xpath(applyPath).click() sleep(2) confimPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.FrameLayout/android.widget.ScrollView/android.webkit.WebView/android.webkit.WebView/android.view.View[3]/android.widget.GridView[2]/android.view.View/android.view.View[1]/android.widget.Button' # driver.find_element_by_xpath(confimPath).click() print(driver.find_element_by_xpath(confimPath).text) sleep(10)
def buyYiTaoJin(param): code = param['code'] isCash = param['isCash'] stockNumVal = param['numVal'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'com.gfhkstore.android' settingData['appActivity'] = 'com.gf.gfglobal.HomeActivity' desired_caps = settingData driver = webdriver.Remote('http://*****:*****@content-desc="closeImage"]' if isExist(driver, 2, tipClosePath): driver.find_element_by_xpath(tipClosePath).click() driver.find_element_by_android_uiautomator( 'new UiSelector().text("首页")').click() sleep(1) driver.find_element_by_android_uiautomator( 'new UiSelector().text("新股申购")').click() sleep(1) # path = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.support.v4.widget.DrawerLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[2]/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[3]' # driver.find_element_by_xpath(path).click() # sleep(1) # pwd = getPwd('dongFang')['tradePwd'] # driver.find_elements_by_class_name('android.widget.EditText')[1].send_keys(pwd) # loginPath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.support.v4.widget.DrawerLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[7]/android.view.View' # driver.find_element_by_xpath(loginPath).click() # sleep(1) # agreePath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[3]/android.widget.LinearLayout/android.view.View[2]' # driver.find_element_by_xpath(agreePath).click() # sleep(5) # driver.find_element_by_android_uiautomator('new UiSelector().text("新股申购")').click() # sleep(5) # driver.find_element_by_xpath('//*[contains(@text, "马上登录")]').click() # sleep(1) # driver.find_element_by_android_uiautomator('new UiSelector().text("新股中心")').click() # sleep(1) # driver.find_element_by_id('com.lphtsccft.zlqqt2:id/main_account').click() # sleep(1) # path = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.View/android.view.View/android.view.View/android.widget.ImageView[2]' # driver.find_element_by_xpath(path).click() # sleep(1) # driver.find_element_by_android_uiautomator('new UiSelector().text("打新股")').click() # driver.find_element_by_android_uiautomator('new UiSelector().text("新股认购")').click() # sleep(1) # driver.find_element_by_xpath('//android.widget.TextView[contains(@text, "认购中")]').click() # sleep(1) # if isExist(driver,'com.tigerbrokers.stock:id/btn_cancel') : # driver.find_element_by_id('com.tigerbrokers.stock:id/btn_cancel').click() # sleep(1) # driver.find_element_by_android_uiautomator('new UiSelector().text("IPO")').click() # sleep(1) # driver.find_element_by_android_uiautomator('new UiSelector().text("港股")').click() # sleep(1) # buyPath='//android.widget.TextView[contains(@text,"(' + code + '.HK)")]/parent::*/following-sibling::android.widget.LinearLayout[1]/android.widget.RelativeLayout/android.widget.TextView' # driver.find_element_by_xpath(buyPath).click() # sleep(1) # if not isCash: # driver.find_element_by_id('com.juniorchina.jcstock:id/iv_margin').click() # numPath = 'new UiSelector().textContains("%d")'%(stockNum) # driver.find_element_by_android_uiautomator(numPath).click() sleep(10)
def buyFuTu(param): code = param['code'] isCash = param['isCash'] # stockNum = param['num'] stockNumVal = param['numVal'] isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'cn.futu.trader' settingData['appActivity'] = '.launch.activity.LaunchActivity' desired_caps = settingData driver = webdriver.Remote('http://*****:*****@text="' + code + '"]/parent::*/parent::*/following-sibling::android.widget.RelativeLayout/android.widget.TextView' if isExist(driver, 2, buyPath): driver.find_element_by_xpath(buyPath).click() sleep(4) print(driver.page_source) financeTimePath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[3]/android.view.View[4]' financingPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[26]/android.view.View[5]/android.view.View/android.view.View[5]/android.view.View' cashPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[26]/android.view.View[4]/android.view.View/android.view.View[3]/android.view.View' cashNextPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[27]/android.view.View[4]/android.view.View/android.view.View[3]/android.view.View' financingNextPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[27]/android.view.View[5]/android.view.View/android.view.View[5]/android.view.View' tipPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[2]' nextFlag = False if isExist(driver, 2, cashNextPath): cashPath = cashNextPath financingPath = financingNextPath nextFlag = True if isExist(driver, 2, cashPath): if not isCash: if isExist(driver, 2, financingPath): financingBtn = driver.find_element_by_xpath(financingPath) financingBtn.click() sleep(1) else: cashBtn = driver.find_element_by_xpath(cashPath) cashFlag = cashBtn.get_attribute('checked') if not cashFlag: cashBtn.click() sleep(1) if nextFlag: otherPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[22]' else: otherPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[21]' driver.find_element_by_xpath(otherPath).click() sleep(1) num = str(4 + 2 * numFromStr(stockNumVal)) if isCashAll: if nextFlag: cashAllPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[26]/android.view.View[1]/android.view.View/android.view.View[4]/android.view.View[2]' else: cashAllPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[25]/android.view.View[1]/android.view.View/android.view.View[4]/android.view.View[2]' driver.find_element_by_xpath(cashAllPath).click() sleep(1) elif isFinancingAll: if nextFlag: finacingAllPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[26]/android.view.View[1]/android.view.View/android.view.View[4]/android.view.View[3]' else: finacingAllPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[25]/android.view.View[1]/android.view.View/android.view.View[4]/android.view.View[3]' driver.find_element_by_xpath(finacingAllPath).click() sleep(1) else: if nextFlag: numPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[26]/android.view.View[1]/android.view.View/android.view.View[3]/android.view.View[2]/android.view.View[' + num + ']/android.view.View[1]/android.widget.TextView' else: numPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[25]/android.view.View[1]/android.view.View/android.view.View[3]/android.view.View[2]/android.view.View[' + num + ']/android.view.View[1]/android.widget.TextView' driver.find_element_by_xpath(numPath).click() sleep(1) nextStepPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[31]/android.view.View[2]/android.view.View[2]/android.view.View[5]' driver.find_element_by_xpath(nextStepPath).click() sleep(2) agreePath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[34]/android.view.View[3]/android.view.View/android.view.View[1]' driver.find_element_by_xpath(agreePath).click() sleep(1) finishPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[35]/android.view.View[2]' # finishBtn = driver.find_element_by_xpath(finishPath) driver.find_element_by_xpath(finishPath).click() sleep(2) print(driver.page_source) pwd = getPwd('fuTu')['tradePwd'] for i in pwd: index = i if i == '0': index = 11 pwdPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[35]/android.view.View[1]/android.view.View[2]/android.view.View/android.view.View/android.widget.ListView/android.view.View[' + index + ']' driver.find_element_by_xpath(pwdPath).click() sleep(1) elif isExist(driver, 2, financeTimePath): financingTime = driver.find_element_by_xpath(financeTimePath) text = financingTime.get_attribute('text') print(text) sleep(5) driver.quit()
def initApp(driver): changePwdPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.Button[1]' if isExist(driver, 2, changePwdPath): driver.find_element_by_xpath(changePwdPath).click()
def buyFuTu(param): code = param['code'] isCash = param['isCash'] # stockNum = param['num'] stockNumVal = param['numVal'] # isFinancingAll = param['isFinancingAll'] isCashAll = param['isCashAll'] settingIndex = param['setIndex'] settingData = getSetting(settingIndex) settingData['appPackage'] = 'cn.futu.trader' settingData['appActivity'] = '.launch.activity.LaunchActivity' desired_caps = settingData # desired_caps = { # 'platformName':'Android', # 'platformVersion':'10', # 'deviceName':'2214c691', # 'appPackage':'cn.futu.trader', # 'noReset':True, # 'appActivity':'.launch.activity.LaunchActivity' # } driver = webdriver.Remote('http://*****:*****@text="' + code + '"]/parent::*/parent::*/following-sibling::android.widget.RelativeLayout/android.widget.TextView' if isExist(driver, 2, buyPath): driver.find_element_by_xpath(buyPath).click() sleep(4) print(driver.page_source) print(driver.contexts) financeTimePath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[3]/android.view.View[4]' financingPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[26]/android.view.View[5]/android.view.View/android.view.View[5]/android.view.View' cashPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[26]/android.view.View[4]/android.view.View/android.view.View[3]/android.view.View' # financingDisablePath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[26]/android.view.View[5]/android.view.View/android.view.View[4]/android.view.View' if isExist(driver, 2, cashPath): if not isCash: if isExist(driver, 2, financingPath): financingBtn = driver.find_element_by_xpath(financingPath) financingBtn.click() sleep(1) else: cashBtn = driver.find_element_by_xpath(cashPath) cashFlag = cashBtn.get_attribute('checked') if not cashFlag: cashBtn.click() sleep(1) otherPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[21]' driver.find_element_by_xpath(otherPath).click() sleep(1) num = str(4 + 2 * numFromStr(stockNumVal)) if isCashAll: cashAllPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[25]/android.view.View[1]/android.view.View/android.view.View[4]/android.view.View[2]' driver.find_element_by_xpath(cashAllPath).click() sleep(1) else: numPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[25]/android.view.View[1]/android.view.View/android.view.View[3]/android.view.View[2]/android.view.View[' + num + ']/android.view.View[1]/android.widget.TextView' driver.find_element_by_xpath(numPath).click() sleep(1) nextStepPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[31]/android.view.View[2]/android.view.View[2]/android.view.View[5]' driver.find_element_by_xpath(nextStepPath).click() sleep(2) agreePath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[34]/android.view.View[3]/android.view.View/android.view.View[1]' driver.find_element_by_xpath(agreePath).click() sleep(1) finishPath = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[35]/android.view.View[2]' # finishBtn = driver.find_element_by_xpath(finishPath) driver.find_element_by_xpath(finishPath).click() sleep(2) print(driver.page_source) pwd = getPwd('fuTu')['tradePwd'] print(pwd[0]) os.system( 'adb shell ime set com.sohu.inputmethod.sogou.xiaomi/.SogouIME' ) # os.system('adb shell ime set io.appium.settings/.UnicodeIME') # os.system('adb shell ime set com.iflytek.inputmethod.miui/.FlyIME') # os.system('adb shell ime set com.baidu.input_mi/.ImeService') pwdPatha = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[35]/android.view.View[1]/android.view.View[2]/android.view.View/android.widget.ListView/android.view.View[1]' driver.find_element_by_xpath(pwdPatha).click() driver.press_keycode(144) # driver.find_element_by_xpath(pwdPatha).set_value(3) # pwdPathb = '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View[35]/android.view.View[1]/android.view.View[2]/android.view.View/android.widget.ListView/android.view.View[2]' # driver.find_element_by_xpath(pwdPathb).click() # driver.press_keycode(10) elif isExist(driver, 2, financeTimePath): financingTime = driver.find_element_by_xpath(financeTimePath) text = financingTime.get_attribute('text') print(text) sleep(5) driver.quit()