【问题标题】:C# Selenium cant find inputC# Selenium 找不到输入
【发布时间】:2018-07-17 03:57:22
【问题描述】:

我很难在 html 中找到输入字段,我可以使用以下代码填写每个输入字段:

public async Task FillElementAsync(By by, string arg)
        {
            WebDriverWait wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(20));
            IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
            {
                return d.FindElement(by);
            });
            myDynamicElement.SendKeys(arg);
        }

但是当我尝试填写这个输入时,我无法聚焦元素:

<span class="center-block">
   <sprd-label-input model="">
      <div class="label-input-wrapper" ng-class="{'active': focused || !!inputValue.length || !!modelValue.length || placeholderExists, 'filled': inputValue.length || modelValue.length}" ng-transclude="">
         <div ng-model="idea.getCurrentTranslation().tags" sprd-validate-tags="idea" blacklist-result="tagsBlacklist" name="tags" class="ng-pristine ng-untouched ng-valid ng-not-empty ng-valid-tags ng-valid-blacklist"></div>
         <label for="design-detail-tags" class="text-medium-grey">Stichwörter</label>
         <!---->
         <sprd-tag-input ng-model="idea.getCurrentTranslation().tags" idea-name="idea.getCurrentTranslation().name" display-tags-left="true" display-related-tags="true" display-error-text="form.$error.tags" blacklist-result="tagsBlacklist" id="input-design-tags" name="designTags" class="ng-pristine ng-untouched ng-valid ng-not-empty">
            <div class="clearfix">
               <!---->
               <div class="tag-input-container form-control clearfix" focus-input-on-click="" remove-on-backspace="ngModel">
                  <!---->
                  <input ng-model="TagInputCtrl.tagInput" uib-typeahead="tagSuggestion for tagSuggestion in TagInputCtrl.getTagSuggestions($viewValue)" class="pull-left ng-pristine ng-untouched ng-valid ng-empty" select-on-comma="" select-on-whitespace="" select-on-blur="" typeahead-focus-first="false" tag-select="TagInputCtrl.onEnter" tag-select-model="ngModel" sprd-max-input-length="50" ng-show="ngModel.length < TagInputCtrl.validatorOptions.tags.max" aria-autocomplete="list" aria-expanded="false" aria-owns="typeahead-2871-1170" type="text">
                  <ul class="dropdown-menu ng-hide" ng-show="isOpen() &amp;&amp; !moveInProgress" ng-style="{top: position().top+'px', left: position().left+'px'}" role="listbox" aria-hidden="true" uib-typeahead-popup="" id="typeahead-2871-1170" matches="matches" active="activeIdx" select="select(activeIdx, evt)" move-in-progress="moveInProgress" query="query" position="position" assign-is-open="assignIsOpen(isOpen)" debounce="debounceUpdate" style="">
                     <!---->
                  </ul>
               </div>
               <!---->
               <p ng-if="displayTagsLeft" class="pull-right">
                  <small class="design-tags-left">noch 25 Stichwörter</small>
               </p>
               <!---->
               <!---->
               <div ng-if="displayRelatedTags" class="form-group clearfix tag-input-related-tags ng-hide" ng-show="TagInputCtrl.relatedTags.length > 0">
                  <p class="label-description pull-left" style="margin-top: 3px;">Vorschläge für Stichwörter:</p>
                  <ul class="list-inline related-tags-list pull-left">
                     <!---->
                  </ul>
               </div>
               <!---->
            </div>
         </sprd-tag-input>
      </div>
   </sprd-label-input>
</span>

我尝试通过类名(“tag-input-container”)、ID(“input-design-tags”)和名称(“designTags”)来查找元素。所以我的问题是,除了自动完成功能之外,这种输入类型还有什么特别之处?

【问题讨论】:

  • 尝试 ByCssSelector("input [ng-model='TagInputCtrl.tagInput']") 如果元素需要在发送键之前处于活动状态,那么您可能需要将鼠标悬停 -在或点击元素
  • 与问题没有直接关系,而是附带评论:您声明此方法async 是否有原因?我想不会,因为你什么都不会await
  • 保持 UI 响应。你说得对,为了简单起见,我删除了这行代码:await JustWaitForXSeconds(5);

标签: c# html selenium


【解决方案1】:

您应该确保在此处将密钥发送到input 元素,而不是sprd-tag-input 元素。

FillElementAsync(By.CssSelector("#input-design-tags input"), "test")

请注意,您可能需要先单击sprd-tag-input 元素才能激活输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2020-05-12
    • 2019-01-11
    • 1970-01-01
    相关资源
    最近更新 更多