0

I want to save a random number between 1 to 31 and use it from a 'click' function in order to click about the saved random number by a 'linkText' locator.

Is it possible?

I need something like:

 var randomDay = Math.floor(31*Math.random() + 1);
 element(by.linkText(randomDay)).click();

The full test is below:

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

The error is below:

Failures:

 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)
Idan E
  • 1,299
  • 4
  • 17
  • 42
  • Whats he problem with the example you posted? Looks like first you initialize variable with the random number you want, and then click the elements with link text like the random number. Exactly what you expected. – Johnny Apr 27 '15 at 21:58
  • I know but it's not worked :/ – Idan E Apr 28 '15 at 06:20
  • What error or exception you are getting? – Priyanshu Apr 28 '15 at 06:38
  • I've added the error in the bottom of the post, thanks! – Idan E Apr 28 '15 at 07:03
  • Offtopic - consider to stop using browser.driver.sleep(3000), try more *smarter* waits. Example here: http://stackoverflow.com/questions/24651231/e2e-testing-webdriverjs-selenium-and-jasmine – Johnny Apr 28 '15 at 09:10

2 Answers2

0

It seems you have a casting error. Try to pass the number as string.

Doron Zavelevsky
  • 1,202
  • 1
  • 10
  • 19
0

It should be like this:

var randomDay = Math.floor(31*Math.random() + 1);
var randomDayLink = randomDay.toString(); 
element(by.linkText(randomDayLink)).click();
Priyanshu
  • 3,040
  • 3
  • 27
  • 34