如何从谷歌移动广告SDK访问WebView屏幕上的UI元素

如何从谷歌移动广告SDK访问WebView屏幕上的UI元素,webview,uiwebview,xcode-ui-testing,xcuitest,Webview,Uiwebview,Xcode Ui Testing,Xcuitest,我正在使用XCUITest进行UI测试自动化,大多数应用程序都是纯本地的,我可以通过accessibilityIdentifiers或简单地通过标签访问元素。我在测试广告是否打开时遇到问题,因为我无法访问广告WebView屏幕上的关闭按钮。Web视图来自iOS版谷歌移动广告SDK 我尝试使用app..buttons[“Close Advertision”]访问元素。点击(),但不起作用,它从不点击Close按钮 当我在调试器中尝试它时,po XCUIApplication()。按钮[“关闭广告]

我正在使用XCUITest进行UI测试自动化,大多数应用程序都是纯本地的,我可以通过
accessibilityIdentifiers
或简单地通过
标签
访问元素。我在测试广告是否打开时遇到问题,因为我无法访问广告WebView屏幕上的关闭按钮。Web视图来自iOS版谷歌移动广告SDK

我尝试使用
app..buttons[“Close Advertision”]访问元素。点击()
,但不起作用,它从不点击Close按钮

当我在调试器中尝试它时,
po XCUIApplication()。按钮[“关闭广告]。点击()
返回我:

    t =    67.80s     Tap "Close Advertisement" Button
    t =    67.80s         Wait for ios.development to idle
    t =    67.82s         Find the "Close Advertisement" Button
    t =    67.86s         Check for interrupting elements affecting "Close Advertisement" Button
    t =    67.89s         Synthesize event
    t =    67.98s         Wait for ios.development to idle
0 elements
这是我执行
po xguiapplication()时屏幕的完整层次结构。debugDescription

  Window (Main), 0x600003cd47e0, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630778878896.4>
    Other, 0x600003cd4700, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630742447520.6>
      Other, 0x600003cd4620, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630742449600.8>
    Other, 0x600003cd4540, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630742912976.229>
      Other, 0x600003cd4460, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630739951984.230>
        Button, 0x600003cd4380, {{0.0, 0.0}, {42.0, 42.0}}, label: 'Close Advertisement', Disabled <AX element pid: 67431, elementOrHash.elementID: 140630739216816.231>
        Other, 0x600003cd42a0, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630777385136.232>
          WebView, 0x600003cd40e0, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630769439744.233>
            WebView, 0x600003cd4000, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630768846336.236>
              WebView, 0x600003cd4e00, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630769495040.237>
                Other, 0x600003cd4ee0, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 5843420293174919168.9999>
                  Other, 0x600003cd4fc0, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67437, elementOrHash.elementID: 140233423230208.3>
                    Other, 0x600003cd50a0, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421369008.4>
                      Other, 0x600003cd5180, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421369040.5>
                        Other, 0x600003cd5260, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421402864.6>
                          Other, 0x600003cd5340, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421478464.7>
                            Other, 0x600003cd5420, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421481056.9>
                              Other, 0x600003cd5500, {{159.0, 303.0}, {57.0, 61.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421480800.10>
                              Other, 0x600003cd55e0, {{327.0, 0.0}, {48.0, 48.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421483680.11>
                                Other, 0x600003cd56c0, {{327.0, 0.0}, {48.0, 48.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421488304.19>
                                  Other, 0x600003cd57a0, {{339.0, 12.0}, {24.0, 24.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421489808.22>
                                  Other, 0x600003cd5880, {{339.0, 12.0}, {24.0, 24.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421486112.23>
                              Other, 0x600003cd5960, {{0.0, 0.0}, {375.0, 24.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421483712.12>
                              Other, 0x600003cd5a40, {{8.0, 635.0}, {24.0, 28.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421482512.13>
                              Other, 0x600003cd5b20, {{40.0, 627.0}, {8.0, 40.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421482544.14>
                                Other, 0x600003cd5c00, {{0.0, 0.0}, {0.0, 0.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421492128.20>
                              Other, 0x600003cd5ce0, {{34.0, 662.0}, {6.0, 5.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421482608.15>
                              Other, 0x600003cd5dc0, {{0.0, 662.0}, {48.0, 5.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421484160.16>
                              Other, 0x600003cd5ea0, {{253.0, 624.0}, {111.0, 31.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421484192.17>
                                Other, 0x600003cd5f80, {{253.0, 624.0}, {111.0, 31.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421496224.21>
                                  StaticText, 0x600003cd6060, {{277.0, 632.0}, {62.0, 15.0}}, label: 'Learn More' <AX element pid: 67437, elementOrHash.elementID: 140233421493056.24>
                              Other, 0x600003cd6140, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421484256.18>
                          Other, 0x600003cd6220, {{0.0, 0.0}, {25.0, 20.0}} <AX element pid: 67437, elementOrHash.elementID: 140233421478944.8>
              Other, 0x600003cc9180, {{342.0, 0.0}, {30.0, 667.0}}, label: 'Vertical scroll bar, 1 page', value: 0% <AX element pid: 67431, elementOrHash.elementID: 140630777539728.238>
              Other, 0x600003cc9260, {{0.0, 634.0}, {375.0, 30.0}}, label: 'Horizontal scroll bar, 1 page', value: 0% <AX element pid: 67431, elementOrHash.elementID: 140630777538944.239>
          Other, 0x600003ce32c0, {{0.0, 0.0}, {376.0, 668.0}} <AX element pid: 67431, elementOrHash.elementID: 140630826768976.234>
          StaticText, 0x600003ce31e0, {{160.0, 0.0}, {55.5, 22.0}}, label: 'Test Ad' <AX element pid: 67431, elementOrHash.elementID: 140630826625872.235>
  Window, 0x600003ce3100, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630783264592.5>
    Other, 0x600003cf4540, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630777978208.7>
      Other, 0x600003cd6300, {{0.0, 0.0}, {375.0, 667.0}} <AX element pid: 67431, elementOrHash.elementID: 140630742527888.9>```


Window(Main),0x600003cd47e0,{0.0,0.0},{375.0,667.0}
其他,0x600003cd4700,{{0.0,0.0},{375.0,667.0}
其他,0x600003cd4620,{{0.0,0.0},{375.0,667.0}
其他,0x600003cd4540,{0.0,0.0},{375.0,667.0}
其他,0x600003cd4460,{0.0,0.0},{375.0,667.0}
按钮,0x600003cd4380,{{0.0,0.0},{42.0,42.0},标签:“关闭广告”,已禁用
其他,0x600003cd42a0,{0.0,0.0},{375.0,667.0}
WebView,0x600003cd40e0,{0.0,0.0},{375.0,667.0}
WebView,0x600003cd4000,{{0.0,0.0},{375.0,667.0}
WebView,0x600003cd4e00,{{0.0,0.0},{375.0,667.0}
其他,0x600003cd4ee0,{0.0,0.0},{375.0,667.0}
其他,0x600003cd4fc0,{0.0,0.0},{375.0,667.0}
其他,0x600003cd50a0,{0.0,0.0},{375.0,667.0}
其他,0x600003cd5180,{0.0,0.0},{375.0,667.0}
其他,0x600003cd5260,{0.0,0.0},{375.0,667.0}
其他,0x600003cd5340,{0.0,0.0},{375.0,667.0}
其他,0x600003cd5420,{0.0,0.0},{375.0,667.0}
其他,0x600003cd5500,{159.0,303.0},{57.0,61.0}
其他,0x600003cd55e0,{{327.0,0.0},{48.0,48.0}
其他,0x600003cd56c0,{{327.0,0.0},{48.0,48.0}
其他,0x600003cd57a0,{{339.0,12.0},{24.0,24.0}
其他,0x600003cd5880,{{339.0,12.0},{24.0,24.0}
其他,0x600003cd5960,{0.0,0.0},{375.0,24.0}
其他,0x600003cd5a40,{8.0635.0},{24.0,28.0}
其他,0x600003cd5b20,{40.0627.0},{8.0,40.0}
其他,0x600003cd5c00,{0.0,0.0},{0.0,0.0}
其他,0x600003cd5ce0,{34.0662.0},{6.0,5.0}
其他,0x600003cd5dc0,{0.0662.0},{48.0,5.0}
其他,0x600003cd5ea0,{253.0624.0},{111.0,31.0}
其他,0x600003cd5f80,{253.0624.0},{111.0,31.0}
StaticText,0x600003cd6060,{{277.0,632.0},{62.0,15.0},标签:“了解更多”
其他,0x600003cd6140,{{0.0,0.0},{375.0,667.0}
其他,0x600003cd6220,{{0.0,0.0},{25.0,20.0}
其他,0x600003cc9180,{342.0,0.0},{30.0667.0},标签:“垂直滚动条,1页”,值:0%
其他,0x600003cc9260,{0.0634.0},{375.0,30.0},标签:“水平滚动条,1页”,值:0%
其他,0x600003ce32c0,{{0.0,0.0},{376.0,668.0}
StaticText,0x600003ce31e0,{160.0,0.0},{55.5,22.0},标签:“测试广告”
窗口,0x600003ce3100,{{0.0,0.0},{375.0,667.0}
其他,0x600003cf4540,{0.0,0.0},{375.0,667.0}
其他,0x600003cd6300,{{0.0,0.0},{375.0,667.0}```

您好,有两种解决方案

  • 你想测试广告吗?如果没有,那么您可以使用launchArguments禁用广告。这样你就不用担心处理广告了
  • 如果无法禁用广告,则获取广告关闭按钮的屏幕坐标。这可以通过获取web视图容器并相对计算关闭按钮点击区域的坐标来完成。然后它将仅仅是在屏幕上调用tap功能

  • 嗨,有两种解决方案

  • 你想测试广告吗?如果没有,那么您可以使用launchArguments禁用广告。这样你就不用担心处理广告了
  • 如果无法禁用广告,则获取广告关闭按钮的屏幕坐标。这可以通过获取web视图容器并相对计算关闭按钮点击区域的坐标来完成。然后它将仅仅是在屏幕上调用tap功能

  • 描述清楚地表明此按钮已禁用。所以,也许你应该在点击它之前执行一些操作?@SmartMonkey我不知道如何才能使用它。我的第一个想法是,当你无法关闭广告时,它会在广告的前5秒钟被禁用,但即使在那之后它似乎也会被禁用。你应该添加尽可能多的信息–屏幕截图、URL、代码等。这将有助于其他人理解你的问题。描述清楚地表明此按钮已禁用。所以,也许你应该在点击它之前执行一些操作?@SmartMonkey我不知道如何才能使用它。我的第一个想法是,当你无法关闭广告时,它会在广告的前5秒钟被禁用,但即使在那之后它似乎也会被禁用。你应该添加尽可能多的信息——屏幕截图、URL、代码等。这将有助于其他人理解你的问题。