Javascript 如何在Jasmine JS的selenium webdriver中存储一个随机值并通过单击函数调用它?
我想保存一个介于1到31之间的随机数,并通过“单击”功能使用它,以便通过“链接文本”定位器单击保存的随机数 可能吗 我需要像这样的东西:Javascript 如何在Jasmine JS的selenium webdriver中存储一个随机值并通过单击函数调用它?,javascript,node.js,selenium-webdriver,automation,jasmine,Javascript,Node.js,Selenium Webdriver,Automation,Jasmine,我想保存一个介于1到31之间的随机数,并通过“单击”功能使用它,以便通过“链接文本”定位器单击保存的随机数 可能吗 我需要像这样的东西: var randomDay = Math.floor(31*Math.random() + 1); element(by.linkText(randomDay)).click(); 完整测试如下: describe('Selenium Test Case', function() { beforeEach(function(){ browser
var randomDay = Math.floor(31*Math.random() + 1);
element(by.linkText(randomDay)).click();
完整测试如下:
describe('Selenium Test Case', function() {
beforeEach(function(){
browser.ignoreSynchronization = true;
});
afterEach(function(){
browser.ignoreSynchronization = false;
});
it('should execute test case without errors', function() {
var text, value, bool, source, url, title;
var TestVars = {};
var randomDay = Math.floor(31*Math.random() + 1);
browser.get("https://www.mywebsite.com/");
captureScreen();
browser.driver.sleep(3000);
element(by.xpath("//div[@class='actions-row']//a[.='Schedule Now']")).click();
captureScreen();
browser.driver.sleep(3000);
element(by.css("div.service-info")).click();
captureScreen();
browser.driver.sleep(3000);
element(by.css("span.gray-button-style")).click();
browser.driver.sleep(3000);
element(by.linkText("Next")).click();
browser.driver.sleep(3000);
element(by.linkText(randomDay)).click();
browser.driver.sleep(3000);
element(by.id("class=icon")).click();
browser.driver.sleep(3000);
element(by.linkText("Continue")).click();
element(by.name("email")).sendKeys("idanvcita@gmail.com");
element(by.xpath("(//textarea[@id='agenda'])[2]")).sendKeys("hello again");
element(by.linkText("Submit")).click();
element(by.linkText("Done")).click();
captureScreen();
browser.driver.sleep(3000);
});
});
错误如下:
describe('Selenium Test Case', function() {
beforeEach(function(){
browser.ignoreSynchronization = true;
});
afterEach(function(){
browser.ignoreSynchronization = false;
});
it('should execute test case without errors', function() {
var text, value, bool, source, url, title;
var TestVars = {};
var randomDay = Math.floor(31*Math.random() + 1);
browser.get("https://www.mywebsite.com/");
captureScreen();
browser.driver.sleep(3000);
element(by.xpath("//div[@class='actions-row']//a[.='Schedule Now']")).click();
captureScreen();
browser.driver.sleep(3000);
element(by.css("div.service-info")).click();
captureScreen();
browser.driver.sleep(3000);
element(by.css("span.gray-button-style")).click();
browser.driver.sleep(3000);
element(by.linkText("Next")).click();
browser.driver.sleep(3000);
element(by.linkText(randomDay)).click();
browser.driver.sleep(3000);
element(by.id("class=icon")).click();
browser.driver.sleep(3000);
element(by.linkText("Continue")).click();
element(by.name("email")).sendKeys("idanvcita@gmail.com");
element(by.xpath("(//textarea[@id='agenda'])[2]")).sendKeys("hello again");
element(by.linkText("Submit")).click();
element(by.linkText("Done")).click();
captureScreen();
browser.driver.sleep(3000);
});
});
失败:
1) Selenium Test Case should execute test case without errors
Message:
UnknownError: java.lang.Long cannot be cast to java.lang.String
Stacktrace:
UnknownError: java.lang.Long cannot be cast to java.lang.String
at new bot.Error (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\
node_modules\selenium-webdriver\lib\atoms\error.js:113:18)
at Object.bot.response.checkResponse (C:\Users\idan\AppData\Roaming\npm\node
_modules\protractor\node_modules\selenium-webdriver\lib\atoms\response.js:106:9)
at C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\node_modules\se
lenium-webdriver\lib\webdriver\webdriver.js:377:20
at [object Object].promise.ControlFlow.runInFrame_ (C:\Users\idan\AppData\Ro
aming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\
promise.js:1877:20)
at [object Object].promise.Callback_.goog.defineClass.notify (C:\Users\idan\
AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\
webdriver\promise.js:2464:25)
at [object Object].promise.Promise.notify_ (C:\Users\idan\AppData\Roaming\np
m\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.
js:563:12)
at Array.forEach (native)
at Object.goog.array.forEach (C:\Users\idan\AppData\Roaming\npm\node_modules
\protractor\node_modules\selenium-webdriver\lib\goog\array\array.js:203:43)
at [object Object].promise.Promise.notifyAll_ (C:\Users\idan\AppData\Roaming
\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promi
se.js:552:16)
at goog.async.run.processWorkQueue (C:\Users\idan\AppData\Roaming\npm\node_m
odules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
Error
at [object Object].ElementArrayFinder.applyAction_ (C:\Users\idan\AppData\Ro
aming\npm\node_modules\protractor\lib\element.js:403:21)
at [object Object].self.(anonymous function) [as click] (C:\Users\idan\AppDa
ta\Roaming\npm\node_modules\protractor\lib\element.js:76:19)
at [object Object].self.(anonymous function) [as click] (C:\Users\idan\AppDa
ta\Roaming\npm\node_modules\protractor\lib\element.js:733:11)
at [object Object].<anonymous> (c:\automation\tests\meeting.js:30:41)
at C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\node_modules\ja
sminewd\index.js:94:14
at [object Object].promise.ControlFlow.runInFrame_ (C:\Users\idan\AppData\Ro
aming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\
promise.js:1877:20)
at [object Object].promise.ControlFlow.runEventLoop_ (C:\Users\idan\AppData\
Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdrive
r\promise.js:1755:8)
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2056:12)
at goog.async.run.processWorkQueue (C:\Users\idan\AppData\Roaming\npm\node_m
odules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
From: Task: Asynchronous test function: it()
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\node_modules\jasminewd\index.js:93:33)
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\node_modules\minijasminenode\lib\async-callback.js:45:37)
at [object Object].jasmine.Block.execute (C:\Users\idan\AppData\Roaming\npm\
node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:1174:1
7)
at [object Object].jasmine.Queue.next_ (C:\Users\idan\AppData\Roaming\npm\no
de_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31)
at onComplete (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\nod
e_modules\minijasminenode\lib\jasmine-1.3.1.js:2205:18)
at [object Object].jasmine.WaitsForBlock.execute (C:\Users\idan\AppData\Roam
ing\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.j
s:2704:5)
at [object Object]._onTimeout (C:\Users\idan\AppData\Roaming\npm\node_module
s\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2718:12)
Error
at [object Object].<anonymous> (c:\automation\tests\meeting.js:11:3)
at [object Object].jasmine.Env.describe_ (C:\Users\idan\AppData\Roaming\npm\
node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:913:21
)
at [object Object].jasmine.Env.describe (C:\Users\idan\AppData\Roaming\npm\n
ode_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:898:15)
at describe (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\node_
modules\minijasminenode\lib\jasmine-1.3.1.js:658:27)
at Object.<anonymous> (c:\automation\tests\meeting.js:1:63)
1)Selenium测试用例应无错误地执行测试用例
信息:
未知错误:java.lang.Long无法转换为java.lang.String
堆栈跟踪:
未知错误:java.lang.Long无法转换为java.lang.String
在新建bot时出错(C:\Users\idan\AppData\Roaming\npm\node\u modules\dragrator\
node_modules\selenium webdriver\lib\atoms\error.js:113:18)
在Object.bot.response.checkResponse(C:\Users\idan\AppData\Roaming\npm\node
_modules\dragrator\node\u modules\selenium webdriver\lib\atoms\response.js:106:9)
位于C:\Users\idan\AppData\Roaming\npm\node\u modules\dragrator\node\u modules\se
lenium webdriver\lib\webdriver\webdriver.js:377:20
位于[object object].promise.ControlFlow.runInFrame\uC:\Users\idan\AppData\Ro
aming\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\webdriver\
允诺.js:1877:20)
在[object object].promise.Callback\uUg.goog.defineClass.notify(C:\Users\idan)处\
AppData\Roaming\npm\node\u模块\Gradutor\node\u模块\selenium webdriver\lib\
webdriver\promise.js:2464:25)
在[object object].promise.promise.notify(C:\Users\idan\AppData\Roaming\np
m\node\u modules\dragrator\node\u modules\selenium webdriver\lib\webdriver\promise。
js:563:12)
at Array.forEach(本机)
在Object.goog.array.forEach(C:\Users\idan\AppData\Roaming\npm\node\u模块
\量角器\node\u modules\selenium webdriver\lib\goog\array\array.js:203:43)
在[object object].promise.promise.notifyAll\uC:\Users\idan\AppData\Roaming
\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\webdriver\promi
se.js:552:16)
在goog.async.run.processWorkQueue(C:\Users\idan\AppData\Roaming\npm\node\m
odules\dragrator\node\u modules\selenium webdriver\lib\goog\async\run.js:125:21)
错误
位于[object object].ElementArrayFinder.applyAction(C:\Users\idan\AppData\Ro
aming\npm\node\u modules\dragrator\lib\element.js:403:21)
在[object object].self.(匿名函数)[as click](C:\Users\idan\AppDa
ta\Roaming\npm\node\u modules\dragrator\lib\element.js:76:19)
在[object object].self.(匿名函数)[as click](C:\Users\idan\AppDa
ta\Roaming\npm\node\u modules\dragrator\lib\element.js:733:11)
在[对象]。(c:\automation\tests\meeting.js:30:41)
位于C:\Users\idan\AppData\Roaming\npm\node\u modules\dragrator\node\u modules\ja
sminewd\index.js:94:14
位于[object object].promise.ControlFlow.runInFrame\uC:\Users\idan\AppData\Ro
aming\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\webdriver\
允诺.js:1877:20)
位于[object object].promise.ControlFlow.runEventLoop\uC:\Users\idan\AppData\
漫游\npm\node\u模块\dragor\node\u模块\selenium webdriver\lib\webdrive
r\promise.js:1755:8)
在[对象]。(C:\Users\idan\AppData\Roaming\npm\node\u模块
es\dragrator\node\u modules\selenium webdriver\lib\webdriver\promise.js:2056:12)
在goog.async.run.processWorkQueue(C:\Users\idan\AppData\Roaming\npm\node\m
odules\dragrator\node\u modules\selenium webdriver\lib\goog\async\run.js:125:21)
From:Task:Asynchronous test function:it()
在[对象]。(C:\Users\idan\AppData\Roaming\npm\node\u模块
es\dragrator\node\u modules\jasminewd\index.js:93:33)
在[对象]。(C:\Users\idan\AppData\Roaming\npm\node\u模块
es\dragrator\node\u modules\minijasminenode\lib\async callback.js:45:37)
在[object object].jasmine.Block.execute(C:\Users\idan\AppData\Roaming\npm\
node\u modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:1174:1
7)
在[object object].jasmine.Queue.next(C:\Users\idan\AppData\Roaming\npm\no
deu modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31)
完成时(C:\Users\idan\AppData\Roaming\npm\node\u modules\dragrator\nod)
e_modules\minijasminenode\lib\jasmine-1.3.1.js:2205:18)
在[object object].jasmine.WaitsForBlock.execute(C:\Users\idan\AppData\Roam
ing\npm\node\u modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.j
s:2704:5)
在[object object]。\u onTimeout(C:\Users\idan\AppData\Roaming\npm\node\u模块
s\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:2718:12)
错误
在[对象]。(c:\automation\tests\meeting.js:11:3)
在[object object].jasmine.Env.description(C:\Users\idan\AppData\Roaming\npm\
node\u modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:913:21
)
在[object object].jasmine.Env.description(C:\Users\idan\AppData\Roaming\npm\n
ode_modules\dragrator\node_modules\minijasminenode\lib\jasmine-1.3.1.js:898:15)
在描述(C:\Users\idan\AppData\Roaming\npm\node\u modules\dragrator\node_
modules\minijasminenode\lib\jasmine-1.3.1.js:658:27)
反对。(c:\automation\tests\meeting.js:1:63)
您似乎有铸造错误。尝试将数字作为字符串传递。应该是这样的:
var randomDay = Math.floor(31*Math.random() + 1);
var randomDayLink = randomDay.toString();
element(by.linkText(randomDayLink)).click();
你贴的例子有什么问题?看起来您首先使用所需的随机数初始化变量,然后单击带有链接文本(如随机数)的元素。正是你所期望的。我知道,但它不起作用:/你得到了什么错误或异常?我已经在文章底部添加了错误,谢谢!Outlook -考虑停止使用浏览器。驱动程序。睡眠(3000),尝试更聪明的等待。示例如下: