javascript - 无法单击具有多个选项的元素

标签 javascript selenium protractor

我尝试按以下方式单击一个元素,但收到错误消息:

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();
    });

最佳答案

您的代码似乎无法处理 promise 。

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();
};

关于javascript - 无法单击具有多个选项的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45157908/

相关文章:

angular - 分组测试结果 : Karma/Protractor integration with Jenkins

javascript - 在另一个 url 中传递 url

javascript - HTML anchor 标记 onclick 提交表单并重定向到 href 链接

c# - Selenium Webdriver C#, Chrome, 图标隐藏元素且不可点击

python-3.x - 为什么我无法将 cookie 上传到 Selenium?

javascript - Ngclick 上传按钮停止工作且不留痕迹

selenium - 无法将文件从 docker-compose mount 复制到主机

javascript - 使用新的 HTML5 历史机制构建无需重新加载页面的网站

javascript - 简单的 for 循环似乎无法正常工作

selenium - 为 WebDriver 测试禁用 Google Chrome 密码气泡