• 我都试过了,chromeOptions 配置的和 switch 的名称一样。还有我想问下,你们切换 webview 的时候,日志打印出来的进程名称有 appbrand 这种的?我这边只有一个 com.tencent.mm:tools 的。而且不论我换成哪个小程序的进程名,返回的进程名就只有一个 com.tencent.mm:tools。
    而且我刚才就在微信首页试了下切换成 webview 的时候,打印出来的页面也是标题是搜一搜的。

  • 这个方法我刚才试过了,我切换到 webview 页面之后,获取到页面的句柄有两个,但是无论我切换到哪个,page_source 返回的页面都不是小程序的页面,甚至我在切换一个页面后得到数据是发现页面是到了搜一搜的页面,我也不知道是怎么回事了。下面是句柄截图和我的代码

    try:
        """登录微信首页后,点击发现按钮,切换至小程序页面"""
        sleep(10)
        print("print context:", self.driver.context)
        find = "发现"
        el_find = self.driver.find_element_by_android_uiautomator("new UiSelector().text(\""+find+"\")")
        print("发现元素有在页面显示吗?: %s" % el_find.is_displayed())
        if el_find.is_displayed():
            el_find.click()
        sleep(THINK_TIME)
        """点击小程序按钮"""
        minipro = "小程序"
        el_minipro = self.driver.find_element_by_android_uiautomator("new UiSelector().text(\""+minipro+"\")")
        print("页面上定位到小程序元素吗?:%s" % el_minipro.is_displayed())
        if el_minipro.is_displayed():
            el_minipro.click()
        """切换页面活动值小程序列表显示页面"""
        self.driver.wait_activity(".plugin.appbrand.ui.AppBrandLauncherUI", THINK_TIME)
        sleep(THINK_TIME)
        print("小程序列表页面当前的context值为:", self.driver.current_context)
        sleep(THINK_TIME)
        target_minipro = "体验"
        el_target = action().find_byUiautormator("textContains", target_minipro)
        print("切换前的页面元素:", self.driver.page_source)
        print("页面上定位到target小程序元素吗?:%s" % el_target.is_displayed())
        if el_target.is_displayed():
            el_target.click()
        """点击小程序进入页面,切换进入webview页面"""
        self.driver.switch_to.context("WEBVIEW_com.tencent.mm:tools")
        sleep(10)
        print("切换后的页面handle名称:",self.driver.current_window_handle)
        print("切换后的页面元素:", self.driver.page_source)
        """进行页面元素选择"""
        print("小程序页面的context值为:%s" % self.driver.current_context)
        print("当前页面的句柄%s" % self.driver.current_window_handle)
        page_handles = self.driver.window_handles
        print("小程序页面的全部句柄%s " % page_handles)
        self.driver.switch_to_window(page_handles[1])
        sleep(10)
        print("切换后的句柄", self.driver.current_window_handle)
        print("页面全部元素%s" % self.driver.page_source)
    except Exception as e:
        raise
    
  • 相关的帖子我之前已经查看过了,不是这个问题,因为日志打印出来的 process 名称就一个 com.tencent.mm:tools,相反如果换成 appbrand 之类的,会报错,找不到对应的 context。

  • 有人遇到过这种情况吗?微信调试模式已经打开。