【问题标题】:Protractor - How to assert that the correct option is selected from a droplist量角器 - 如何断言从下拉列表中选择了正确的选项
【发布时间】:2019-04-25 23:14:28
【问题描述】:

在我的项目中,我有一个下拉列表,我从中选择基于文本的选项。我的目标是在选择选项后进行测试,在 Dropbox 中显示的文本(如下图所示)是否与我的输入值匹配。

我的代码如下:

this.selectDropdownByText = async function(container, inputText){

    await helpers.clickWhenClickable(element(by.cssContainingText('option',inputText)), 5000, "the selected option is not clickable");
    await helpers.clickWhenClickable(CL.Save_Button_BottomPanel,10000);
    await sync.waitUntilElementVisible(await CL.Save_success_Massage, 10000);
    await sync.waitUntilElementInVisible(await CL.Save_success_Massage, 10000);
    await helpers.waitForElementVisibility(container);

 return await container.getSelection().getText();

在我们到达 return 语句之前,代码中没有问题。但是,当我尝试container.getSelection().getText() 时,return 语句会返回错误。错误是TypeError: container.getSelection is not a function 另一方面,如果我尝试container.getText(),它会返回下拉列表的所有选项。

有没有办法做到这一点?

html代码是:

<select _ngcontent-c11="" class="form-control ng-touched ng-dirty ng-valid" formcontrolname="dcbsId"
id="directClassBased">
<!---->
<!---->
<option _ngcontent-c11="" value="1: 54756697-0CC6-45A2-B857-E96E132D46B0" class="ng-star-inserted">HS Com A</option>
<option _ngcontent-c11="" value="2: FA377EE4-66C4-46ED-992D-8D17A6756586" class="ng-star-inserted">HS Com B</option>
<option _ngcontent-c11="" value="3: 7BA46C9C-6150-4E5D-8FD0-270D6387D772" class="ng-star-inserted">HS Com C</option>
.....
..... 
<option _ngcontent-c11="" value="12: 08FD1A93-6507-4ABB-9420-DD2E62F9562C" class="ng-star-inserted">CL TRC</option>

【问题讨论】:

  • 对不起一个菜鸟问题。 container 是什么? helpers 是什么? sync 是什么?除了jasmine/protractor,您还在使用其他框架或库吗?
  • Container 只是我们用于此功能的一个参数。同步是我们脚本中一些可重用函数的集合。助手是一个 Jasmine 模块,您可以在 npmjs.com/package/protractor-helper 找到

标签: jasmine protractor


【解决方案1】:

从下拉列表中选择选项后,在您的方法中尝试以下return 语句。

const container = elemnet(by.css('#directClassBased'));

return await container.getAtrribute('value');

如果以上内容不能帮助分享您的 html 的下拉菜单。

【讨论】:

  • 嗨,谢谢。我已将 html 代码包含在问题正文中。代码中已经有 value 属性了,所以你的方法对我不起作用。
  • @nhrcpt 尝试更新的答案。参考这个stackoverflow.com/questions/32307702/…>
【解决方案2】:

我找到了答案here

解决办法是:

expect(element(by.id('my_id')).$('option:checked').getText()).toEqual('xxxxxx')

在我的例子中,实现是这样的:

return await container.$('option:checked').getText();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多