android - Espresso Android,点击WebView元素报错

标签 android webview android-espresso

我正在使用 Espresso 进行仪器测试。我正在使用支持 WebView 的最新 Espresso 库:

https://google.github.io/android-testing-support-library/docs/espresso/web/

我曾经在 Espresso 上使用 webViews,我设法让它工作。但是这次我不确定是否可能。 webView 中有一个微调器,您单击它,它应该会显示项目列表。我在点击那个微调器时遇到问题。网页 View 源码:

    <div class="row select-box">
    <div class="medium-4 columns">
        <label for="MultipaysSessionSenderBankCode" class="inline">Bank name</label>    </div>
    <div class="medium-8 columns">
        <input type="hidden" name="data[MultipaysSession][sender_bank_code]" id="" value=""><select name="data[MultipaysSession][sender_bank_code]" class="hide-first" data-toggler="" data-value="other" data-show="other-bank" id="MultipaysSessionSenderBankCode">
<option value="">Please select your bank</option>
<option value="00000">Demo Bank</option>
<optgroup label="Top banks">
<option value="24900005">Alior Bank</option>
<option value="10900004">Bank Zachodni WBK (plus d. Kredyt Bank)</option>
<option value="10500103">ING Bank Śląski</option>
<option value="11402004">mBank</option>
<option value="11400000">mBank (d. MultiBank)</option>
<option value="11602202">Millennium Bank</option>
<option value="12401428">Pekao (UniCredit)</option>
<option value="10200003">PKO BP (iPKO, iPKONET)</option>
<option value="10205558">PKO BP (Inteligo)</option>
</optgroup>
<optgroup label="Other banks">
<option value="20300003">Bank BGŻ</option>
<option value="10600005">Bank BPH</option>
<option value="13200006">Bank Pocztowy</option>
<option value="19300005">Bank BPS (E25)</option>
<option value="16000003">BNP Paribas (d. Fortis Bank)</option>
<option value="15401056">BOŚ Bank</option>
<option value="10300022">Citibank Handlowy</option>
<option value="19400008">Credit Agricole (d. Lukas Bank)</option>
<option value="19101048">Deutsche Bank</option>
<option value="14700002">Eurobank</option>
<option value="14600009">Getin Bank</option>
<option value="16800007">PLUS Bank (d. INVEST-BANK)</option>
<option value="17500009">Raiffeisen Polbank</option>
<option value="24901044">T-Mobile Usługi Bankowe (d. Alior Sync)</option>
<option value="21300004">Volkswagen Bank</option>
</optgroup>
<option value="other">Other ...</option>
</select>   </div>
</div>

现在我想在 Espresso 中找到这个微调器并单击它(它会显示带有项目的 android 对话框)。我尝试这样的事情:

onWebView().withElement(findElement(Locator.ID, "MultipaysSessionSenderBankCode")).perform(webClick());

或者,

onWebView().withElement(findElement(Locator.CLASS_NAME, "data[MultipaysSession][sender_bank_code]")).perform(webClick());

定位器文档:http://developer.android.com/reference/android/support/test/espresso/web/webdriver/Locator.html

但无论我尝试什么,我都会得到这个错误:

java.lang.RuntimeException: java.lang.RuntimeException: Fatal exception checking document state: Evaluation: status: 13 value: {message=Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self'".
} hasMessage: true message: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self'".

这是否意味着有某种安全措施阻止我用 Espresso 触摸这个 View ?

最佳答案

您的 ID 标签是空的。考虑这样做

> <div class="medium-8 columns">
>     <input type="hidden" name="data[MultipaysSession][sender_bank_code]" id="MyIdForThisUI"
> value=""><select name="data[MultipaysSession][sender_bank_code]"
> class="hide-first" data-toggler="" data-value="other"
> data-show="other-bank" id="MultipaysSessionSenderBankCode">

然后:

onWebView().withElement(findElement(Locator.ID, "MyIdForThisUI")).perform(webClick());

关于android - Espresso Android,点击WebView元素报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33761034/

相关文章:

Android:Espresso 不会等到显示 fragment 或 Activity ,所以每个测试都失败了

android - 支持 C++11 的最低 Android 操作系统版本

javascript - 加载html后将js文件从assets加载到webview

android - Jenkins 在 headless linux aws 上运行,xvfb 连接 AndroidTest espresso 出错

javascript - Android WebView 清除表单填充内容

android - 使用Android WebView时JavaScript异常显示在哪里?

java - 如何在 Espresso 中以编程方式单击 Android 手机 "home"按钮

android - 在同一个可滚动布局/fragment 中添加多个 GridView

java - android-防止带有 MultiChoiceItems 的对话框通过点击按钮从 mySQL 数据库复制数据

android - 强制重新启动完整的应用程序以刷新 Cordova 中的包