GVKun编程网logo

Java Selenium-如何在基于AngularJS的页面中单击没有ID或ng-class的按钮(angularjs点击事件)

8

在本文中,我们将为您详细介绍JavaSelenium-如何在基于AngularJS的页面中单击没有ID或ng-class的按钮的相关知识,并且为您解答关于angularjs点击事件的疑问,此外,我们还

在本文中,我们将为您详细介绍Java Selenium-如何在基于AngularJS的页面中单击没有ID或ng-class的按钮的相关知识,并且为您解答关于angularjs点击事件的疑问,此外,我们还会提供一些关于angularjs – Angular 2(Ionic 2)在显示页面时调用页面中的函数、angularjs – angular ng-class if-else表达式、angularjs – Angular UI-Grid:如何清除所有(一般Angular和内置UI-Grid)按钮上的列过滤器单击、angularjs – Angular-Meteor – 如何在基于包的设计中包含ng模板?的有用信息。

本文目录一览:

Java Selenium-如何在基于AngularJS的页面中单击没有ID或ng-class的按钮(angularjs点击事件)

Java Selenium-如何在基于AngularJS的页面中单击没有ID或ng-class的按钮(angularjs点击事件)

我使用的以下代码未单击按钮并显示错误
消息。

WebElement clickNextButton = webDriver.findElement(By.cssSelector("button[ng-btn-success'']"));clickNextButton.click();

Error message shows “no such element: Unable to locate element.

I’ve also tried the following code segments without success:

  1. WebElement clickNext1 = webDriver.findElement(By.cssSelector(“button[ng-class=’pccCTRL.pow.Page1InputsValid() ? ‘btn-success’ : ‘btn-default’‘]”));
    clickNext1.click();

  2. webDriver.findElement(By.partialLinkText(“Next”)).click();

  3. webDriver.findElement(By.cssSelector(“button[type=’button’]”)).click();

Here is the screenshot showing the html code segment of the button I’m trying
to

Button codesegment

Hoping to get feedback. Thank you.

答案1

小编典典

好的,我可以使用By.xpath解决此问题

这是解决它的代码段:

WebElement clickNextButton = webDriver.findElement(By.xpath("//button[contains(text(),''Next'')]"));clickNextButton.click();

angularjs – Angular 2(Ionic 2)在显示页面时调用页面中的函数

angularjs – Angular 2(Ionic 2)在显示页面时调用页面中的函数

当我的主页角度2(离子2)应用程序加载时,我想要呼叫服务/功能.怎么做到这一点?

第一次加载应用程序时(加载主页)我可以在构造函数中编写它,但是当用户开始使用应用程序并将新页面推送到导航控制器并弹出它们以返回主页时,构造函数不会再次被召唤.

我被困在这里.

我想知道实现此功能的最佳方法是什么?

我是angular2和ionic2框架的新手(也没有angular1和ionic1的经验),请帮帮我.

非常感谢.

更新

我试过的示例代码,但没有奏效.

import {Page,NavController,Platform,Storage,sqlStorage} from 'ionic-angular';

@Page({
  templateUrl: 'build/pages/page1/page1.html'
})
export class Page1 {
    static get parameters(){
        return [[NavController],[Platform]];
    }
    ngOnInit() {
        console.log("Showing the first page!");
    }
    constructor(nav,platform){
        this.nav = nav;
        this.platform =  platform;
    }
}
onPageWillEnter()为我工作.
import {Page,sqlStorage} from 'ionic-angular';


@Page({
  templateUrl: 'build/pages/page1/page1.html'
})
export class Page1 {
    static get parameters(){
        return [[NavController],[Platform]];
    }
    onPageWillEnter() {
        console.log("Showing the first page!");
    }
    constructor(nav,platform){
        this.nav = nav;
        this.platform =  platform;
    }
}

Ionic lifecycle hook

angularjs – angular ng-class if-else表达式

angularjs – angular ng-class if-else表达式

我使用angularjs ng-class以下面的方式:
<divdata-ng-click="PickUp()" 
ng-https://www.jb51.cc/tag/irs/" target="_blank">irst:'classA',second:'classB',third:'classC',fourth:'classC'}[call.State]"/>

我想知道如果我可以使用if-else表达式,我可以做类似这样的事情:

<divdata-ng-click="PickUp()" 
ng-https://www.jb51.cc/tag/irs/" target="_blank">irst:'classA',else:'classC'}[call.State]"/>

意味着每当call.State不同于第一或第二使用classC并且不指定每个值。

谢谢!

使用嵌套的inline if-then语句( Ternary Operators)
<div ng->

例如 :

<div ng->
    ...
</div>

并确保它是可读的你的同事:)

angularjs – Angular UI-Grid:如何清除所有(一般Angular和内置UI-Grid)按钮上的列过滤器单击

angularjs – Angular UI-Grid:如何清除所有(一般Angular和内置UI-Grid)按钮上的列过滤器单击

如何在按钮单击时清除并刷新所有(一般Angular和内置UI-Grid)过滤器?

背景:我已经构建了一个使用UI-Grid并利用built-in filtering functionality的应用程序.它还具有以角度编写的跨列搜索.

当前战斗我希望能够通过单击按钮清除和刷新我的过滤器.到目前为止,我已经能够为跨列搜索实现这一点,但是没有成功地为内置列过滤器实现它(具有讽刺意味的是,我认为这将是最简单的部分!).

关于问题的研究:

1)通过UI-Grid教程搜索…失败

2)看着提供的UI-Grid API ……部分成功!好像我认为我在“clearallFilters”功能(here is the source code)中找到了我要找的东西,但我无法弄清楚如何实现它,所以步骤3 ……

3)谷歌搜索疯狂的实施演示/示例/帮助/提示/任何东西!? …失败

4)在Stack Overflow上寻求帮助:)

提前致谢.

对不起,我没有看到ui grid的clearallFilters()函数.所以它变得更简单.你可以这样做:
$scope.clearFilters = function() {
            $scope.myGridApi.grid.clearallFilters();
        };

angularjs – Angular-Meteor – 如何在基于包的设计中包含ng模板?

angularjs – Angular-Meteor – 如何在基于包的设计中包含ng模板?

我有一个Angular-Meteor应用程序正在运行.我想将Angular模板和关联的控制器打包到Meteor包中,并通过添加该包将这些模板注入我的主应用程序.

什么是最好的方法?

更新2015-08-26 – 我想出了如何添加模板,如下所示.但是如何让Meteor包将模板的Angular控制器注入基础应用程序?

关键的搭配是Angular UI-router.

我有一个基本应用程序,其中包含名为packageprefix:packagename的包.在这个包中,我的代码位于包文件夹的根目录中:
myPackagedPage.ng.html – Angular HTML模板
myPackagedPage.js – 关联的Angular控制器

从我的主应用程序,我尝试创建一个到我的Angular模板的路由,如下所示:

angular.module('parentModule',[
    'angular-meteor','ui.router','angularify.semantic.sidebar'
])

.config(['$urlRouterProvider','$stateProvider','$locationProvider',function($urlRouterProvider,$stateProvider,$locationProvider){
    console.log("app.js config!");
    $locationProvider.html5Mode(true);

    $stateProvider
        .state('home',{
            url: '/',templateUrl: 'client/views/home/home.ng.html',controller: 'HomeCtrl'
        })

        .state('myPackagedPage',{
            url: '/myPackagedPage',templateUrl: 'packageprefix_packagename/myPackagedPage.ng.html',controller: 'MyPackagedPageCtrl'
        })
    ;

    $urlRouterProvider.otherwise('/');

}])

应用程序成功找到myPackagedPage.ng.html文件并呈现它.但是如何添加控制器?

我尝试在我的包中添加它,但控制器函数不会被调用.

console.log("myPackagedPage.js loaded");
angular.module('parentModule')

.controller('MyPackagedPageCtrl',['$scope',function($scope){
        console.log("MyPackagedPageCtrl");
    }])
;

我收到一个错误:

Argument 'MyPackagedPageCtrl' is not a function,got undefined

解决方法

我现在有这个工作.这个方法对我来说很有用,可以将Meteor包中的Angular Controller模板注入到包含的应用程序中.

在我的package.js中,我有这个

Package.onUse(function(api) {
    api.versionsFrom('1.1.0.3');
    api.use('angular:angular@1.4.4','client');
    api.use("urigo:angular@0.9.3",'client');
    api.use("session@1.1.0",'client');

    //api.use('angularui:angular-ui-router@0.2.15','client');
    api.addFiles('interests.js','client');
    api.addFiles('interests.ng.html','client');

    api.export("InterestsCtrl","client")
});

请注意,您必须导出控制器,以便父应用程序可以访问它.

在我的包中,名为ramshackle:bigd-interest,我在根级别拥有这些文件:package.js,interests.ng.html和interests.js. interests.js将Angular控制器,Anguilar UI路由器路由注入模板,以及侧栏链接到父应用程序.它通过使用Meteor Session实现了这一点.我玩过其他方式,但Session是唯一有效的方法.请注意正确确定会话变量名称的范围.

//add controllers
var controllers = Session.get("BIGD.controllers");
if (!controllers) controllers = {};

var interestsCtrlSpec = "'$scope',InterestsCtrl";

InterestsCtrl = function($scope){
    console.log("InterestsCtrl running");
};
controllers.InterestsCtrl = interestsCtrlSpec;
Session.set("BIGD.controllers",controllers);

//add routes
var routes = Session.get("BIGD.routes");
if (!routes) routes = {};
routes.interests = {
    url: '/interests',templateUrl: 'ramshackle_bigd-interests_interests.ng.html',controller: 'InterestsCtrl'
};
Session.set("BIGD.routes",routes);

//add sidebar links
//the key determines sorting order
var sidebar = Session.get("BIGD.sidebar");
if (!sidebar) sidebar = {};
sidebar["interests"] = {
    url: '/interests',controller: 'InterestsCtrl',rank: 5
};
Session.set("BIGD.sidebar",sidebar);

var interestsItem = {label: 'Interests',link: '/interests',icon: "rocket"};

在我的父应用程序的app.js中,我动态加载了会话中的控制器和路由,如下所示:

angular.module('bigdam','angularify.semantic.sidebar','nvd3','leaflet-directive','ui.router.history'
])

    .config(['$urlRouterProvider',$locationProvider){
        //console.log("app.js config!");
        $locationProvider.html5Mode(true);

        //add a static state
        $stateProvider
            .state('home',{
                url: '/',controller: 'HomeCtrl'
            });

        //add the dynamic routes/states from other Meteor packages
        for (var stateId in routes) {
            var route = routes[stateId];
            $stateProvider
                .state(stateId,route);
        }

        $urlRouterProvider.otherwise('/');
    }])
;

//Declare the controllers from plugins
for (var controllerId in controllers) {
    var controllerSpec = controllers[controllerId];
    var controllerSpecArray = eval("[" + controllerSpec + "]")
    angular.module('bigdam').controller(controllerId,controllerSpecArray);
}

所以现在,当我创建一个新的Meteor软件包并遵循上述约定时,其控制器,路由和侧边栏链接将加载到主应用程序中.

今天关于Java Selenium-如何在基于AngularJS的页面中单击没有ID或ng-class的按钮angularjs点击事件的介绍到此结束,谢谢您的阅读,有关angularjs – Angular 2(Ionic 2)在显示页面时调用页面中的函数、angularjs – angular ng-class if-else表达式、angularjs – Angular UI-Grid:如何清除所有(一般Angular和内置UI-Grid)按钮上的列过滤器单击、angularjs – Angular-Meteor – 如何在基于包的设计中包含ng模板?等更多相关知识的信息可以在本站进行查询。

本文标签: