2017-07-18 43 views
0

我想点击一个元素下面的方式,但得到一个错误说元素:不能单击有多个选项

Failed: Cannot read property 'click' of undefined 

代码:

'use strict;' 
 
var PresentPage = function(){ 
 
    let PresentPageTitle = element(by.xpath("//*[@id='planAndDev']/div/div/div/div/matanot/form/div[2]/h4")); 
 
    let UserPhone = element(by.id("tel")); 
 
    let Email = element(by.id("email")); 
 
    var AresForPresents = element(by.xpath("//*[@id='verticalRadioGrp']/div/select")).all(by.tagName("option")).then(function(options) 
 
    { 
 
     return options; 
 
    }); 
 
    this.SelectAreaToGetPresent = function() 
 
    { 
 
     AresForPresents[3].click(); 
 
    }; 
 
}; 
 
module.exports = new PresentPage();

编辑: 当在一个函数内使用它时,它工作正常。

this.SelectAreaToGetPresent = function() 
 
    { 
 
     element(by.xpath("//*[@id='verticalRadioGrp']/div/select")).all(by.tagName("option")).then(function(options) 
 
    { 
 
     options[3].click(); 
 
    });

+0

难道你有一个错字,并且正在寻找'AreasForPresents [3]'(即缺少一个'a')吗? –

+0

你能发布这个文件(html)吗? –

+0

@Garr戈弗雷遗憾的不是因为它是一个公共组织。 –

回答

1

它看起来像你的代码不处理的承诺。

var AresForPresents = element(by.xpath("//*[@id='verticalRadioGrp']/div/select")).all(by.tagName("option")); 
this.SelectAreaToGetPresent = function() 
{ 
    AresForPresents.then((options)=> { options[3].click(); }); 
}; 

否则,您需要async/await

var AresForPresents; 
this.SelectAreaToGetPresent = async()=> 
{ 
    AresForPresents = await element(by.xpath("//*[@id='verticalRadioGrp']/div/select")).all(by.tagName("option")); 
    AresForPresents[3].click(); 
}; 
相关问题