Selenium 录制错误后更正XPath

Selenium 录制错误后更正XPath,selenium,xpath,Selenium,Xpath,下午好,我是自动化测试新手,非常感谢您指导如何为Selenium IDE或Selenium builder似乎错误识别控件的控件找到正确的XPath 汽车类别–Selenium IDE记录的XPath ID相对: //div[@id='content']/div/div/div/div/section/form/div/div/div/div/div/div[4]/div[2]/div/div/div[2]/ng-include/div/div/span XPath位置: //ng包括/di

下午好,我是自动化测试新手,非常感谢您指导如何为Selenium IDE或Selenium builder似乎错误识别控件的控件找到正确的XPath

汽车类别–Selenium IDE记录的XPath ID相对:

//div[@id='content']/div/div/div/div/section/form/div/div/div/div/div/div[4]/div[2]/div/div/div[2]/ng-include/div/div/span
  • XPath位置:

    //ng包括/div/div/span

汽车和车辆租赁子类别–ID -XPath ID相对值:

//div[@id='content']/div/div/div/div/section/form/div/div/div/div/div/div[4]/div[2]/div/div/div[2]/ng-include/div[2]/div/ng-include/div/div/span
  • XPath位置:

    //div[2]/div/ng include/div/div/span

源代码示例

  <label>Categories *</label>
                <div class="validation-message ng-hide" ng-show="createOfferForm.selectedCategoriesTree.$wasInvalidOnBlur || createOfferForm.selectedCategoriesTree.$invalidated">
                    Please select at least one category

                </div>
                <br/>
                <script type="text/ng-template" id="category-template.html">
                    <div class="list-group-item box-list-item" ng-class="{selected: category.Selected}" ng-click="toggleSelect(category, listCategories);">

                        <div>

                            <span class="box-title truncate category">{{category.Title}}</span>

                            <span class="box-icon" ng-init="category.expanded = false" ng-show="showChevron(category)">

                                <i class="fa fa-chevron-up" ng-click="category.expanded = !category.expanded; $event.stopPropagation();" ng-show="category.expanded"></i>

                                <i class="fa fa-chevron-down" ng-click="expand(category); category.expanded = !category.expanded; $event.stopPropagation();" ng-hide="category.expanded"></i>

                            </span>

                        </div>

                    </div>

                    <div ng-show="category.expanded">

                        <div class="sub-level" ng-repeat="category in category.listCategories">

                            <ng-include src="'category-template.html'"></ng-include>
                        </div>
                    </div>

                </script>
                <div class="pure-g">
                    <div class="pure-u-1">
                        <i>Available</i>
                        <div class="categories-list box-list" tabindex="5">
                            <span ng-if="!listCategories.length" ng-hide="overlaySelected"><strong>The domain has to be selected in order to see the list of categories!</strong></span>
                            <div class="loading" ng-show="overlaySelected">
                                <div class="spinner-wrapper">
                                    <span class="spinner-text">LOADING</span>
                                    <span class="spinner"></span>
                                </div>
                            </div>
                            <div class="level" ng-repeat="category in listCategories" ng-model="category">
                                <ng-include src="'category-template.html'"></ng-include>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="pure-g mtH1">
                    <div class="pure-u-1">
                        <i>Selected</i>
                        <div class="categories-selected unload">
                            <ul class="box-list" ng-cloak ng-model="selectedCategoriesTree" name="selectedCategoriesTree" not-empty ng-was-invalid-on-blur tabindex="6" ng-class="{invalid: createOfferForm.selectedCategoriesTree.$wasInvalidOnBlur || createOfferForm.selectedCategoriesTree.$invalidated}">
                                <li ng-repeat="categoriesRow in selectedCategoriesTree" ng-cloak class="list-group-item">
                                    <label class="box-list-item" ng-repeat="category in categoriesRow">
                                        <div>
                                            <span class="box-title">{{ category.Title }}</span>
                                            <span class="box-icon"><i class="fa fa-times" ng-click="removeSelected(category.Id)"></i></span>
                                        </div>
                                    </label>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
类别*
请至少选择一个类别

{{category.Title}} 可获得的 必须选择域才能查看类别列表 加载 挑选出来的
  • {{category.Title}}

不完全确定您要映射哪些元素,您是否考虑过使用css进行映射

例如,如果您试图映射以下范围:

<span ng-if="!listCategories.length" ng-hide="overlaySelected"><strong>The domain has to be selected in order to see the list of categories!</strong></span>
只是一个简单的提示-

编辑 为什么我认为在以下情况下应该避免使用xpath:


css/xpath选择器之间的性能差异基本上为零,除非在旧版本的IE中处理它。所以在选择一个选择器时不要考虑到这一点。。。尽管如此,我选择CSS选择器的主要原因是可读性。这也是开发人员和用户体验人员之间的共同语言

你有实际问题吗?请通读一下。它可能已经识别出当时的元素。欢迎来到AJAX世界。“DOM使用css与元素交互”真的吗?!?!“Xpath与css相比缺乏性能”你有什么可以支持的吗?!?!我很累,没有正确地表达自己。。。正在尝试购买css。。。编辑。。。。
cssSelector = ".categories-list box-list > span"