最新消息:20210917 已从crifan.com换到crifan.org

【已解决】iOS自动处理WiFi代理:从WiFi详情页进入配置代理页面

iOS crifan 528浏览 0评论
折腾:
【未解决】iOS自动化安装app:给当前WiFi去掉代理以及自动安装app后再恢复之前代理
期间,已经可以进去WiFi详情页。
现在需要去找到 代理设置 并点击后面的按钮,进去配置代理页面。
已经进去了WiFi的详情页:
xml
<XCUIElementTypeTable type="XCUIElementTypeTable" enabled="true" visible="true" x="0" y="0" width="414" height="736">
。。。
    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="657" width="414" height="39">
        <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="HTTP 代理" name="HTTP 代理" label="HTTP 代理" enabled="true" visible="true" x="0" y="657" width="414" height="39"/>
    </XCUIElementTypeOther>
    <XCUIElementTypeCell type="XCUIElementTypeCell" enabled="true" visible="true" x="0" y="695" width="414" height="46">
        <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="695" width="414" height="1"/>
        <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="740" width="414" height="1"/>
        <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="配置代理" name="配置代理" label="配置代理" enabled="true" visible="true" x="20" y="708" width="70" height="21"/>
        <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="关闭" name="关闭" label="关闭" enabled="true" visible="true" x="341" y="708" width="35" height="21"/>
        <XCUIElementTypeButton type="XCUIElementTypeButton" name="更多信息" label="更多信息" enabled="false" visible="true" x="386" y="711" width="8" height="14"/>
    </XCUIElementTypeCell>
以及:
自己单独手动去设置加上代理后:
在此之前,看看当前Mac中的IP:
~  ifconfig | grep 192.
    inet 192.168.31.46 netmask 0xffffff00 broadcast 192.168.31.255
是192.168.31.46
设置后是:
<XCUIElementTypeCell type="XCUIElementTypeCell" enabled="true" visible="true" x="0" y="695" width="414" height="46">
    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="695" width="414" height="1"/>
    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="740" width="414" height="1"/>
    <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="配置代理" name="配置代理" label="配置代理" enabled="true" visible="true" x="20" y="708" width="70" height="21"/>
    <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="手动" name="手动" label="手动" enabled="true" visible="true" x="341" y="708" width="35" height="21"/>
    <XCUIElementTypeButton type="XCUIElementTypeButton" name="更多信息" label="更多信息" enabled="false" visible="true" x="386" y="711" width="8" height="14"/>
</XCUIElementTypeCell>
然后就可以接着去写代码了:
此处没法wda去query,又只能用bs的find
        """
            设置 无线局域网 详情页 代理 关闭:
                <XCUIElementTypeTable type="XCUIElementTypeTable" enabled="true" visible="true" x="0" y="0" width="414" height="736">
                。。。
                    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="657" width="414" height="39">
                        <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="HTTP 代理" name="HTTP 代理" label="HTTP 代理" enabled="true" visible="true" x="0" y="657" width="414" height="39"/>
                    </XCUIElementTypeOther>
                    <XCUIElementTypeCell type="XCUIElementTypeCell" enabled="true" visible="true" x="0" y="695" width="414" height="46">
                        <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="695" width="414" height="1"/>
                        <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="740" width="414" height="1"/>
                        <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="配置代理" name="配置代理" label="配置代理" enabled="true" visible="true" x="20" y="708" width="70" height="21"/>
                        <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="关闭" name="关闭" label="关闭" enabled="true" visible="true" x="341" y="708" width="35" height="21"/>
                        <XCUIElementTypeButton type="XCUIElementTypeButton" name="更多信息" label="更多信息" enabled="false" visible="true" x="386" y="711" width="8" height="14"/>
                    </XCUIElementTypeCell>


            设置 无线局域网 详情页 代理 手动:
                <XCUIElementTypeCell type="XCUIElementTypeCell" enabled="true" visible="true" x="0" y="695" width="414" height="46">
                    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="695" width="414" height="1"/>
                    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="740" width="414" height="1"/>
                    <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="配置代理" name="配置代理" label="配置代理" enabled="true" visible="true" x="20" y="708" width="70" height="21"/>
                    <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="手动" name="手动" label="手动" enabled="true" visible="true" x="341" y="708" width="35" height="21"/>
                    <XCUIElementTypeButton type="XCUIElementTypeButton" name="更多信息" label="更多信息" enabled="false" visible="true" x="386" y="711" width="8" height="14"/>
                </XCUIElementTypeCell>
        """
        curPageXml = self.get_page_source()
        soup = CommonUtils.xmlToSoup(curPageXml)
        configProxyChainList = [
            {
                "tag": "XCUIElementTypeTable",
                "attrs": self.FullScreenAttrDict
            },
            {
                "tag": "XCUIElementTypeCell",
                "attrs": {"enabled":"true", "visible":"true", "x":"0", "width":"%s" % self.X}
            },
            {
                "tag": "XCUIElementTypeStaticText",
                "attrs": {"enabled":"true", "visible":"true", "value": "配置代理"}
            },
        ]
        configProxySoup = CommonUtils.bsChainFind(soup, configProxyChainList)
        if not configProxySoup:
            respInfo = "Not find 配置代理 in connected WiFi detail page"
            return isProcessdOk, respInfo


        parentCellSoup = configProxySoup.parent
        proxyValueP = 
re.compile
("(手动)|(自动)|(关闭)")
        proxyValueSoup = parentCellSoup.find(
            'XCUIElementTypeStaticText',
            attrs={"type": "XCUIElementTypeStaticText", "value": proxyValueP, "enabled":"true", "visible":"true"},
        )
        if not proxyValueSoup:
            respInfo = "Not find current value of proxy config"
            return isProcessdOk, respInfo
        
        proxySoupAttrDict = proxyValueSoup.attrs
        currentProxyValue = proxySoupAttrDict.get("value")
        if currentProxyValue == "关闭":
            # no need change proxy
            isProcessdOk = True
            respInfo = None # means no proxy
            return isProcessdOk, respInfo
        elif currentProxyValue == "手动":
            # need into config page, to get it value, then reconfig to 关闭
            clickedOk = self.clickElementCenterPosition(proxyValueSoup)
            if not clickedOk:
                respInfo = "Fail to click 配置代理 当前值:%s" % currentProxyValue
                return isProcessdOk, respInfo
            
            
        else:
            # currentProxyValue == "自动"
            respInfo = "Not support of current  proxy config value %s" % currentProxyValue
            return isProcessdOk, respInfo
先写这些,去调试
可以找到 配置代理
能找到此处的 手动
可以点击 手动 进入 配置代理 页面。
然后:
【未解决】iOS自动处理WiFi代理:配置代理页中从手动切换到关闭
【后记20200610】
再去整理优化成独立函数:
    def iOSGetCurrentWiFiProxyType(self):
        """from WiFi detail page, get current proxy config type value"""
        proxyTypeSoup = None
        """
            设置 无线局域网 详情页 代理 关闭:
                <XCUIElementTypeTable type="XCUIElementTypeTable" enabled="true" visible="true" x="0" y="0" width="414" height="736">
                。。。
                    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="657" width="414" height="39">
                        <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="HTTP 代理" name="HTTP 代理" label="HTTP 代理" enabled="true" visible="true" x="0" y="657" width="414" height="39"/>
                    </XCUIElementTypeOther>
                    <XCUIElementTypeCell type="XCUIElementTypeCell" enabled="true" visible="true" x="0" y="695" width="414" height="46">
                        <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="695" width="414" height="1"/>
                        <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="740" width="414" height="1"/>
                        <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="配置代理" name="配置代理" label="配置代理" enabled="true" visible="true" x="20" y="708" width="70" height="21"/>
                        <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="关闭" name="关闭" label="关闭" enabled="true" visible="true" x="341" y="708" width="35" height="21"/>
                        <XCUIElementTypeButton type="XCUIElementTypeButton" name="更多信息" label="更多信息" enabled="false" visible="true" x="386" y="711" width="8" height="14"/>
                    </XCUIElementTypeCell>


            设置 无线局域网 详情页 代理 手动:
                <XCUIElementTypeCell type="XCUIElementTypeCell" enabled="true" visible="true" x="0" y="695" width="414" height="46">
                    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="695" width="414" height="1"/>
                    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="740" width="414" height="1"/>
                    <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="配置代理" name="配置代理" label="配置代理" enabled="true" visible="true" x="20" y="708" width="70" height="21"/>
                    <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="手动" name="手动" label="手动" enabled="true" visible="true" x="341" y="708" width="35" height="21"/>
                    <XCUIElementTypeButton type="XCUIElementTypeButton" name="更多信息" label="更多信息" enabled="false" visible="true" x="386" y="711" width="8" height="14"/>
                </XCUIElementTypeCell>
        """
        curPageXml = self.get_page_source()
        soup = CommonUtils.xmlToSoup(curPageXml)
        configProxyChainList = [
            {
                "tag": "XCUIElementTypeTable",
                "attrs": self.FullScreenAttrDict
            },
            {
                "tag": "XCUIElementTypeCell",
                "attrs": {"enabled":"true", "visible":"true", "x":"0", "width":"%s" % self.X}
            },
            {
                "tag": "XCUIElementTypeStaticText",
                "attrs": {"enabled":"true", "visible":"true", "value": "配置代理"}
            },
        ]
        configProxySoup = CommonUtils.bsChainFind(soup, configProxyChainList)
        if configProxySoup:
            parentCellSoup = configProxySoup.parent
            proxyTypeP = re.compile("(手动)|(自动)|(关闭)")
            proxyTypeSoup = parentCellSoup.find(
                'XCUIElementTypeStaticText',
                attrs={"type": "XCUIElementTypeStaticText", "value": proxyTypeP, "enabled":"true", "visible":"true"},
            )


        return proxyTypeSoup
调用:
        proxyTypeSoup = self.iOSGetCurrentWiFiProxyType()
        if not proxyTypeSoup:
            respInfo = "Not find current WiFi proxy config type"
            return isProcessdOk, respInfo
即可。

转载请注明:在路上 » 【已解决】iOS自动处理WiFi代理:从WiFi详情页进入配置代理页面

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
93 queries in 0.181 seconds, using 23.41MB memory