tafuji's blog

C#, Xamarin, Azure DevOps を中心に書いています。

Xamarin.UITest Tips - Xamarin.Forms WebView 利用時のメモ

はじめに

とある案件で、Xamarin.iOS の WKWebView を利用したアプリを Xamarin.UITest で自動化することがあって、 Xamarin.UITest のドキュメントを確認すると、app.Query(c=>c.Class("WKWebView")) で WKWebView を取得することができると記載されていました。

念のため、Xamarin.Forms の場合はどうなるか、確認してみました。

まとめ

Xamarin.Forms の場合でも iOS では、app.Query(x =>x.Class("WKWebView")) のように Class メソッドの引数に WKWebView を指定して WebView を取得する必要がある。

試したこと

Xamarin.Forms で WebView が配置された簡単なサンプルアプリを Xamarin.UITest で WebView が取得できるかを確認しました。 REPL を起動して、app.Query(x => x.WebView()) で試してみましたが、予想通り何も取得できせんでした。

app.Query(c=>c.Class("WKWebView")) で試してみると、下の図のように取得することができました。

Repl

参考:サンプル

以下のサンプルを利用しました。

サンプルの一部を抜粋しておきます。

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             x:Class="WebViewSample.LoadingLabelXaml"
             Title="Loading Demo">
    <StackLayout>
        <!--Loading label should not render by default.-->
        <Label x:Name="labelLoading" Text="Loading..." IsVisible="false" />
        <WebView HeightRequest="1000" 
             WidthRequest="1000" 
             Source="https://dotnet.microsoft.com/apps/xamarin" 
             Navigated="webviewNavigated" 
             Navigating="webviewNavigating" />
    </StackLayout>
</ContentPage>