在我的项目中,我有一个下拉列表,从中可以基于文本选择一个选项。我的目标是测试一旦选择了该选项,则下拉框中显示的文本(如下面的图片)是否与我的输入值匹配。
我的代码如下:
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>
答案 0 :(得分:0)
从下拉列表中选择选项后,尝试使用下面的return
语句。
const container = elemnet(by.css('#directClassBased'));
return await container.getAtrribute('value');
如果上述方法不能帮助您共享下拉菜单的html。
答案 1 :(得分:0)
我找到了答案here。
解决方案是:
expect(element(by.id('my_id')).$('option:checked').getText()).toEqual('xxxxxx')
就我而言,实现是这样的:
return await container.$('option:checked').getText();