Javascript 如何在量角器中没有文本的情况下单击按钮?

Javascript 如何在量角器中没有文本的情况下单击按钮?,javascript,angularjs,selenium-webdriver,jasmine,protractor,Javascript,Angularjs,Selenium Webdriver,Jasmine,Protractor,如何单击相同的 我尝试了以下代码: describe ('angularjs homepage', function() { browser.get('http://angular.github.io/peepcode-tunes/public/'); element(by.css('[ng-click="player.playlist.add(album)"]')).click(); }); 不幸的是,它不起作用。 请帮助更好地使用量角器。期望条件等待元素变为可单击状态,然后

如何单击相同的

我尝试了以下代码:

describe ('angularjs homepage', function() {
    browser.get('http://angular.github.io/peepcode-tunes/public/');
    element(by.css('[ng-click="player.playlist.add(album)"]')).click();
});
不幸的是,它不起作用。
请帮助

更好地使用量角器。期望条件等待元素变为可单击状态,然后执行单击操作

代码段:

EC = protractor.ExpectedConditions;

describe ('angularjs homepage', function() {

it('test case name',function(){

browser.ignoreSynchronization=true;

var twoButtons=element.all(by.css('.queue.add'));
browser.get('http://angular.github.io/peepcode-tunes/public/');

/*It will click first button, chance get(1) for second button*/    
browser.wait(EC.elementToBeClickable(twoButtons.get(0)),  
                                          8000).thenCatch(function () {
                      assert.fail(' element is not click able');
              });
twoButtons.get(0).click();
});
});

最好使用量角器。ExpectedConditions等待元素变为可单击状态,然后执行单击操作

代码段:

EC = protractor.ExpectedConditions;

describe ('angularjs homepage', function() {

it('test case name',function(){

browser.ignoreSynchronization=true;

var twoButtons=element.all(by.css('.queue.add'));
browser.get('http://angular.github.io/peepcode-tunes/public/');

/*It will click first button, chance get(1) for second button*/    
browser.wait(EC.elementToBeClickable(twoButtons.get(0)),  
                                          8000).thenCatch(function () {
                      assert.fail(' element is not click able');
              });
twoButtons.get(0).click();
});
});

您无法单击它们,因为它们都具有相同的类和属性。 在这些情况下,您有两种选择:

1) 您可以直接使用CSS的第n个子概念

describe ('angularjs homepage', function() {
browser.get('http://angular.github.io/peepcode-tunes/public/');
element(by.css('#container > section > ul > li:nth-child(1) > button')).click();  // it will click the first "+" button
element(by.css('#container > section > ul > li:nth-child(2) > button')).click();  // it will click the second "+" button
});
2) 您可以按照上面答案中的@noor建议使用索引访问它们:

describe ('angularjs homepage', function() {
browser.get('http://angular.github.io/peepcode-tunes/public/');
element.all(by.css('.queue.add')).get(0).click();  // it will click the first "+" button
element.all(by.css('.queue.add')).get(1).click();  // it will click the second "+" button
});

我测试过了,两个都能用!如果你面临问题,请告诉我

您无法单击它们,因为它们都具有相同的类和属性。 在这些情况下,您有两种选择:

1) 您可以直接使用CSS的第n个子概念

describe ('angularjs homepage', function() {
browser.get('http://angular.github.io/peepcode-tunes/public/');
element(by.css('#container > section > ul > li:nth-child(1) > button')).click();  // it will click the first "+" button
element(by.css('#container > section > ul > li:nth-child(2) > button')).click();  // it will click the second "+" button
});
2) 您可以按照上面答案中的@noor建议使用索引访问它们:

describe ('angularjs homepage', function() {
browser.get('http://angular.github.io/peepcode-tunes/public/');
element.all(by.css('.queue.add')).get(0).click();  // it will click the first "+" button
element.all(by.css('.queue.add')).get(1).click();  // it will click the second "+" button
});

我测试过了,两个都能用!如果你面临问题,请告诉我

我已经在java中检查了这一点,尽管这里没有标记java。希望你能把你的代码转换成js

在java中,要单击first+,请使用以下命令:

driver.findElements(By.cssSelector(".queue.add")).get(0).click();
秒+:

driver.findElements(By.cssSelector(".queue.add")).get(1).click();
因此,我认为如果您使用以下js代码,这将起作用:

 element(by.css('.queue.add')).click();
如果js中有任何方法可以获取元素,那么首先获取元素,然后单击using元素
索引。

我已经在java中检查了这一点,尽管这里没有标记java。希望你能把你的代码转换成js

在java中,要单击first+,请使用以下命令:

driver.findElements(By.cssSelector(".queue.add")).get(0).click();
秒+:

driver.findElements(By.cssSelector(".queue.add")).get(1).click();
因此,我认为如果您使用以下js代码,这将起作用:

 element(by.css('.queue.add')).click();
如果js中有任何方法可以获取元素,那么首先获取元素,然后单击using元素 索引。

检查API。确保你有最新的版本。您可以通过多种方式获取加号。一种方法是使用webdriver.By.css

尝试:

您还可以使用webdriver向加号添加一个ID,并以这种方式获取它。By.ID检查API。确保你有最新的版本。您可以通过多种方式获取加号。一种方法是使用webdriver.By.css

尝试:



您还可以使用webdriver将ID添加到加号并以这种方式获取它。通过.ID

说“它不工作”,您的意思是没有启动任何操作或console中有一些错误?你确定你的按钮在点击前被找到了吗?我已经给了网站链接。你可以试着让我知道。我找不到按钮@策略是说“它不工作”,您的意思是没有触发任何操作,或者控制台中有一些错误?你确定你的按钮在点击前被找到了吗?我已经给了网站链接。你可以试着让我知道。我找不到按钮@trattoNot Working@SureshLocator可能不正确,请共享与该按钮相关的HTML代码。如果无法正常工作,请附上您的错误信息,这将有助于我们预测可能导致我已附上网站的问题。你能用检查元件看一下吗?试过了。不工作。你能在你这边运行它并让我知道吗?@KishanPatel,似乎这不是angularjs应用程序。所以我把browser.ignoreSynchronization=true;,现在它可以工作了。对我来说,它工作不工作@SureshLocator可能不正确,请共享与该按钮相关的HTML代码。如果无法正常工作,请附上您的错误信息,这将有助于我们预测可能导致我已附上网站的问题。你能用检查元件看一下吗?试过了。不工作。你能在你这边运行它并让我知道吗?@KishanPatel,似乎这不是angularjs应用程序。所以我把browser.ignoreSynchronization=true;,现在它可以工作了。对我来说,它起作用了。在过去的一年里,我一直在研究硒。我在selenium也做了同样的事情。但我要用量角器。元素(by.css('.queue.add'))。单击();不起作用,我早些时候试过。noor,我已经用硒1年了。我在selenium也做了同样的事情。但我要用量角器。元素(by.css('.queue.add'))。单击();无法工作,我之前尝试过。失败:1)angularjs主页遇到声明异常消息:TypeError:element(…)。get不是函数堆栈:TypeError:element(…)。get不是套件中的函数。(D:\dragrator\git.js:3:32)在对象处。(D:\dragrator\git.js:1:1)at Module.\u compile(Module.js:413:34)at Object.Module.\u extensions..js(Module.js:422:10)at Module.load(Module.js:357:32)at Function.Module.\u load(Module.js:314:12)at Module.require(Module.js:367:17)1规范,1次故障在0.03秒内完成C:\Users\kipatel\AppData\Roaming\npm\node_modules\Gragrator\node_modules\selenium webdriver\lib\pro mise.js:1329 return callbackFn(this.value));^错误:在页面上找不到angu-lar:angu-lar从未提供resumeBootstrap atI missed
。所有
选项,我更新了答案。您是否尝试过使用第n个子项?C:\Users\kipatel\AppData\Roaming\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\pr mise.js:1329 return callbackFn(this.value);^错误:在页面上找不到Angular:Anglar从未在C:\Users\kipatel\AppData\Roaming\npm\node\U modules\Gradulator\Build\Gradulator.js:679:17提供resumeBootstrap。我仍然得到了这个。。我做错了什么?你能测试一下吗?你使用的是哪个量角器版本和jasmine framework r u?失败:1)angularjs主页遇到声明异常消息:TypeError:element(…)。get不是函数堆栈:TypeError:element(…)。get不是套件中的函数。(D:\dragrator\git.js:3:32)在对象处。(D:\gragrator\git.js:1:1)在Module.\u编译(Module.js:413:34)在Object.Module.\u扩展..js(mo