0

今日、いくつかの UI テストを作成するためにセレンを使い始めました。使用するのはかなり簡単で、いくつかの良い進歩を遂げているようです.

最新のベータ版の剣道を使用しているページがあります。私がテストしようとしている複数選択コントロールがあります。

コントロールの出力されたhtmlは次のようになります

<div class="k-widget k-multiselect k-header" style="">
  <div class="k-multiselect-wrap floatWrap">
    <ul role="listbox" unselectable="on" class="k-reset" id="StoreIds_taglist"></ul>
    <input class="k-input k-readonly" style="width: 119px;" accesskey="" role="listbox" aria-expanded="false" tabindex="0" aria-owns="StoreIds_taglist StoreIds_listbox" aria-disabled="false" aria-busy="false"><span class="k-loading" style="display: none;"></span></div>
    <select data-val="true" data-val-required="Please select at least 1 store" id="StoreIds" multiple="multiple" name="StoreIds" data-role="multiselect" style="display: none;" aria-disabled="false">
      <option value="d0f36ef4-28be-4d16-a2e8-37030004174a">stoe jo blogs</option>
      <option value="0f0afaec-797a-4b70-8599-ffb4176d7933">Store 3</option>
      <option value="11774315-a0e0-4686-8c70-b882a8f75ab4">store 5</option>
      <option value="28f32bc1-17de-4c73-8bed-b0abd7f5bd81">store 6</option>
      <option value="daf9927c-26a2-4395-ba6d-800d5af85ca7">store4</option>
      <option value="86bd876f-3312-4d1f-96ce-640e0dbf46df">z</option>
      <option value="7da8dfe0-f395-4dc3-9aed-1ce44ac280c0">zxzxc</option>
  </select>
  <span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-weight: normal; letter-spacing: normal; text-transform: none; line-height: 18.328125px; position: absolute; visibility: hidden;">Select stores...    
  </span>
</div>

選択リストからインデックスを選択するためのセレン テストを作成しようとしています。

これまでのところ、

   IWebElement sTag = driver.FindElement(By.Id("StoreIds"));
   SelectElement selectTag = new SelectElement(sTag);
   var availableOptions = selectTag.Options;

availbleOptions には 7 つの項目がありますが、テキストは常に空です。基本的に、リストから項目を選択しようとしています。

私は運が悪い

  foreach (IWebElement item in availableOptions)
        {
            item.Click();
            Console.WriteLine(item.Text);
        }

エラーが発生する

オプション要素をクリックできません。(予期しない JavaScript エラー)

アイテムを選択できるようにするにはどうすればよいですか?

OK 完全なテスト例

 [Test]
    public void TestMultiSelect()
    {
        driver.Navigate().GoToUrl("C:/temp/HTMLPage1.html");
        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
        wait.Until((d) => { return d.Title.StartsWith("Test"); });

        var stores = driver.FindElement(By.Id("required"));
        IWebElement sTag = driver.FindElement(By.Id("required"));

        SelectElement selectTag = new SelectElement(sTag);
        var availableOptions = selectTag.Options;

        foreach (IWebElement item in availableOptions)
        {
            item.Click();
            Console.WriteLine(item.Text);
        }

    }

HTML ページ

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Test</title>
 <link href="https://da7xgjtj801h2.cloudfront.net/2013.1.226/styles/kendo.common.min.css" rel="stylesheet" type="text/css" />
<link href="https://da7xgjtj801h2.cloudfront.net/2013.1.226/styles/kendo.default.min.css" rel="stylesheet" type="text/css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
     <script src="https://da7xgjtj801h2.cloudfront.net/2013.1.226/js/kendo.web.min.js"></script>
<script src="https://da7xgjtj801h2.cloudfront.net/2013.1.226/js/kendo.aspnetmvc.min.js"></script>
    </head>
    <body>
    <div id="example" class="k-content" role="application">
    <div class="demo-section">
    <h2>Invite Attendees</h2>
    <label for="required">Required</label>
    <select id="required" multiple="multiple" data-placeholder="Select attendees...">
        <option>Steven White</option>
        <option>Nancy King</option>
        <option>Anne King</option>
        <option>Nancy Davolio</option>
        <option>Robert Davolio</option>
        <option>Michael Leverling</option>
        <option>Andrew Callahan</option>
        <option>Michael Suyama</option>
        <option>Anne King</option>
        <option>Laura Peacock</option>
        <option>Robert Fuller</option>
        <option>Janet White</option>
        <option>Nancy Leverling</option>
        <option>Robert Buchanan</option>
        <option>Margaret Buchanan</option>
        <option>Andrew Fuller</option>
        <option>Anne Davolio</option>
        <option>Andrew Suyama</option>
        <option>Nige Buchanan</option>
        <option>Laura Fuller</option>
    </select>

</div>
<style scoped>
    .demo-section {
        width: 350px;
        height: 200px;
        padding: 30px;
    }
    .demo-section h2 {
        font-weight: normal;
    }
    .demo-section label {
        display: inline-block;
        margin: 15px 0 5px 0;
    }
    .demo-section select {
        width: 350px;
    }
    #get {
        float: right;
        margin: 25px auto 0;
    }
</style>
<script>
    $(document).ready(function () {
        // create MultiSelect from select HTML element
        $("#required").kendoMultiSelect();
              });
</script>

4

1 に答える 1

0

これを回避するには、IJavaScriptExecutor を使用する必要があります

//js.ExecuteScript(String.Format("$('#{0}').data('kendoMultiSelect').value({1});", "tagname", Value))
于 2014-04-23T15:06:48.103 に答える