【问题标题】:how do i click and select one by one all the items on the option dropdown using Protractor typescript如何使用量角器打字稿单击并一一选择选项下拉列表中的所有项目
【发布时间】:2019-02-06 04:26:34
【问题描述】:

我需要帮助来为此创建打字稿/javascript 量角器代码吗?用于网络自动化

这是网站代码:

<select class="form-control mainpage1" ng-options="infomation details opt1" ng-model="listVM.selectedInfo" ng-change="listVM.selectedInfoChanged()" ng-disabled="!listVM.finishLoad" style="">
<option label="dLicense Status" value="object:1002" selected="selected">License Status</option>
<option label="dLicense Category" value="object:1003">License Category</option>
<option label="ExpiryDate" value="object:1004">Expiry Date</option>
<option label="DOB" value="object:1005">Birthday</option>
<option label="License Number" value="object:1006">License Number</option>
<option label="Nationality" value="object:1007">Nationality</option>
<option label="Weight" value="object:1008">Weight</option>
<option label="Height" value="object:1009">Height</option></select>

我需要单击一个选项1,然后选择选项1后,再次选择并单击选项2,依此类推..

我尝试了以下代码:

browser.actions().mouseMove(element(by.cssContainingText('[value="object:1003"]','License Status'))).click().perform()
browser.actions().mouseMove(element(by.cssContainingText('[value="object:1004"]','License Category'))).click().perform()  

发生错误:

Failed: No element found using locator: by.cssContainingText("[value="object:1003"]", "License Status")

【问题讨论】:

    标签: angular typescript jasmine protractor webautomation


    【解决方案1】:

    使用 css 和 tagName 代替 xpath 更新。

    我尚未对此进行测试,但您应该能够通过在该下拉列表中创建一个包含所有选项元素的数组然后在其上运行 foreach 来选择每个选项。

    element(by.css('.form-control mainpage1'))
      .all(by.tagName('option'))
      .forEach((option) => {
        option.click();
      });
    

    【讨论】:

    • xpath 不起作用,我需要在多个浏览器、chrome、edge、opera 等上测试它。所以 xpath 是不可取的,你能提供除 xpath 之外的解决方案吗
    • 我根据您的 xpath 要求更新了我的答案。如果您仍有问题,请告诉我
    【解决方案2】:

    玩具试过这个吗?:

    首先点击下拉菜单,显示选项:

    var dropdown = element(by.model('listVM.selectedInfo');
    
    dropdown.click();
    element(by.cssContainingText('option', 'License Status')).click();
    element(by.cssContainingText('option', 'License Category')).click();
    

    当然,您每次都必须单击下拉菜单才能显示列表。

    希望对您有所帮助。 干杯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-19
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多