0

I have problem with method findElement in Selenium. The site is very poor, but do not look at it :) My html:

   <html lang="en">
<head>
  <meta name="generator" content=
  "HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org" />
  <meta charset="UTF-8" />

  <title>Rezerwacja</title>
  <style type="text/css">
/*<![CDATA[*/
    p {
        text-align: center;
    }
  /*]]>*/
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js" type=
  "text/javascript">
</script>
  <link rel="stylesheet" href=
  "https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css"
  type="text/css" />
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"
  type="text/javascript">
</script>
  <script type="text/javascript">
//<![CDATA[
  $(function() {
    $( "#datepicker" ).datepicker();
  });
  $(function(){
      $("#submit").on('click', function(e){
           e.preventDefault();
           $.ajax({
               url: "/flights",
               method: "get",
               data: {date: $("#datepicker").val(), dest: $("#destination").val()},
               success: function(data2){ $('#flights').html(data2); $( "#selectable" ).selectable(); }
           });
       });
   });
  //]]>
  </script>
  <style id="igtranslator-color" type="text/css">
</style>
  <style type="text/css">
/*<![CDATA[*/
  body {
  background-color: green;
  }
  div.c4 {background-image: url("resource://jid1-dgnibwqga0sibw-at-jetpack/data/icons/home.png"); display: none;}
  div.c3 {display: none; width: 0px; height: 0px;}
  div.c2 {text-align: center}
  hr.c1 {text-align: center}
  /*]]>*/
  </style>
</head>

<body>
  <form name="main_page">
    <input value="Strona g&#179;&#243;wna" onclick="self.location.href=('/')" type=
    "button" /> <input value="Rezerwacja" onclick=
    "self.location.href=('reservation_page.html')" type="button" />
  </form>
  <hr class="c1" color="#00000" size="2px" width="99%" />

  <h1>Wyb&#243;r lotu</h1>

  <form id="dateDestination" action="URL">
    <p>Date: <input class="hasDatepicker" id="datepicker" type="text" /></p>

    <p>Destination: <input id="destination" type="text" /></p>

    <p><input id="submit" value="Show flights" type="button" /></p>
  </form>

  <div id="flights"></div>
  <hr class="c1" color="#00000" size="2px" width="99%" />

  <h1>P&#179;atno&#182;&#230;</h1>

  <form action="mailto:" method="post" enctype="text/plain">
    <div>
      <h3>Podaj dane osobowe:</h3><input name="imi&#234;" /> - Imi&#234;<br />
      <br />
      <input name="nazwisko" /> - Nazwisko<br />

      <h3>Podaj nr telefonu:</h3><input name="telefon" /> - Telefon<br />

      <h3>Wybierz p&#179;e&#230;:</h3><input name="P&#179;e&#230;" value="Kobieta" type=
      "radio" /> - Kobieta<br />
      <input name="P&#179;e&#230;" value="M&#234;&#191;czyzna" type="radio" /> -
      M&#234;&#191;czyzna<br />

      <h3>Podaj dat&#234; urodzenia:</h3>dzie&#241; / miesi&#177;c / rok<br />
      <select name="dzie&#241;.urodzin">
        <option selected="selected">
          1
        </option>

        <option>
          2
        </option>

        <option>
          3
        </option>

        <option>
          4
        </option>

        <option>
          5
        </option>

        <option>
          6
        </option>

        <option>
          7
        </option>

        <option>
          8
        </option>

        <option>
          9
        </option>

        <option>
          10
        </option>

        <option>
          11
        </option>

        <option>
          12
        </option>

        <option>
          12
        </option>

        <option>
          13
        </option>

        <option>
          14
        </option>

        <option>
          15
        </option>

        <option>
          16
        </option>

        <option>
          17
        </option>

        <option>
          18
        </option>

        <option>
          19
        </option>

        <option>
          20
        </option>

        <option>
          21
        </option>

        <option>
          22
        </option>

        <option>
          23
        </option>

        <option>
          24
        </option>

        <option>
          25
        </option>

        <option>
          26
        </option>

        <option>
          27
        </option>

        <option>
          28
        </option>

        <option>
          29
        </option>

        <option>
          30
        </option>

        <option>
          31
        </option>
      </select> <select name="miesi&#177;c.urodzin">
        <option selected="selected">
          1
        </option>

        <option>
          2
        </option>

        <option>
          3
        </option>

        <option>
          4
        </option>

        <option>
          5
        </option>

        <option>
          6
        </option>

        <option>
          7
        </option>

        <option>
          8
        </option>

        <option>
          9
        </option>

        <option>
          10
        </option>

        <option>
          11
        </option>

        <option>
          12
        </option>
      </select> <select name="rok.urodzin">
        <option selected="selected">
          1899
        </option>

        <option>
          1900
        </option>

        <option>
          1901
        </option>

        <option>
          1902
        </option>

        <option>
          1903
        </option>

        <option>
          1904
        </option>

        <option>
          1905
        </option>

        <option>
          1906
        </option>

        <option>
          1907
        </option>

        <option>
          1908
        </option>

        <option>
          1909
        </option>

        <option>
          1910
        </option>

        <option>
          1911
        </option>

        <option>
          1912
        </option>

        <option>
          1913
        </option>

        <option>
          1914
        </option>

        <option>
          1915
        </option>

        <option>
          1916
        </option>

        <option>
          1917
        </option>

        <option>
          1918
        </option>

        <option>
          1919
        </option>

        <option>
          1920
        </option>

        <option>
          1921
        </option>

        <option>
          1922
        </option>

        <option>
          1923
        </option>

        <option>
          1924
        </option>

        <option>
          1925
        </option>

        <option>
          1926
        </option>

        <option>
          1927
        </option>

        <option>
          1928
        </option>

        <option>
          1929
        </option>

        <option>
          1930
        </option>

        <option>
          1931
        </option>

        <option>
          1932
        </option>

        <option>
          1933
        </option>

        <option>
          1934
        </option>

        <option>
          1935
        </option>

        <option>
          1936
        </option>

        <option>
          1937
        </option>

        <option>
          1938
        </option>

        <option>
          1939
        </option>

        <option>
          1940
        </option>

        <option>
          1941
        </option>

        <option>
          1942
        </option>

        <option>
          1943
        </option>

        <option>
          1944
        </option>

        <option>
          1945
        </option>

        <option>
          1946
        </option>

        <option>
          1947
        </option>

        <option>
          1948
        </option>

        <option>
          1949
        </option>

        <option>
          1950
        </option>

        <option>
          1951
        </option>

        <option>
          1952
        </option>

        <option>
          1953
        </option>

        <option>
          1954
        </option>

        <option>
          1955
        </option>

        <option>
          1956
        </option>

        <option>
          1957
        </option>

        <option>
          1958
        </option>

        <option>
          1959
        </option>

        <option>
          1960
        </option>

        <option>
          1961
        </option>

        <option>
          1962
        </option>

        <option>
          1963
        </option>

        <option>
          1964
        </option>

        <option>
          1965
        </option>

        <option>
          1966
        </option>

        <option>
          1967
        </option>

        <option>
          1968
        </option>

        <option>
          1969
        </option>

        <option>
          1970
        </option>

        <option>
          1971
        </option>

        <option>
          1972
        </option>

        <option>
          1973
        </option>

        <option>
          1974
        </option>

        <option>
          1975
        </option>

        <option>
          1976
        </option>

        <option>
          1977
        </option>

        <option>
          1978
        </option>

        <option>
          1979
        </option>

        <option>
          1980
        </option>

        <option>
          1981
        </option>

        <option>
          1982
        </option>

        <option>
          1983
        </option>

        <option>
          1984
        </option>

        <option>
          1985
        </option>

        <option>
          1986
        </option>

        <option>
          1987
        </option>

        <option>
          1988
        </option>

        <option>
          1989
        </option>

        <option>
          1990
        </option>

        <option>
          1991
        </option>

        <option>
          1992
        </option>

        <option>
          1993
        </option>

        <option>
          1994
        </option>

        <option>
          1995
        </option>

        <option>
          1996
        </option>

        <option>
          1997
        </option>

        <option>
          1998
        </option>

        <option>
          1999
        </option>

        <option>
          2000
        </option>

        <option>
          2001
        </option>

        <option>
          2002
        </option>

        <option>
          2003
        </option>

        <option>
          2004
        </option>

        <option>
          2005
        </option>

        <option>
          2006
        </option>

        <option>
          2007
        </option>

        <option>
          2008
        </option>

        <option>
          2009
        </option>

        <option>
          2010
        </option>

        <option>
          2011
        </option>

        <option>
          2012
        </option>

        <option>
          2013
        </option>

        <option>
          2014
        </option>

        <option>
          2015
        </option>
      </select>

      <h3>Podaj adres e-mail:</h3>Przyk&#179;adowy adres: example@xx.xx<br />
      <input name="e-mail" size="20" /> - E-mail<br />
      <br />
    </div>
  </form>
  <hr class="c1" color="#00000" size="2px" width="99%" />

  <h3>Wybierz miejsce:</h3>

  <div class="c2">
    <p><img src="seats.png" /></p>Rz&#177;d <select name="rzad">
      <option selected="selected">
        1
      </option>

      <option>
        2
      </option>

      <option>
        3
      </option>

      <option>
        4
      </option>

      <option>
        5
      </option>

      <option>
        6
      </option>

      <option>
        7
      </option>

      <option>
        8
      </option>

      <option>
        9
      </option>

      <option>
        10
      </option>

      <option>
        11
      </option>

      <option>
        12
      </option>

      <option>
        12
      </option>

      <option>
        13
      </option>

      <option>
        14
      </option>

      <option>
        15
      </option>

      <option>
        16
      </option>

      <option>
        17
      </option>

      <option>
        18
      </option>

      <option>
        19
      </option>

      <option>
        20
      </option>

      <option>
        21
      </option>

      <option>
        22
      </option>

      <option>
        23
      </option>

      <option>
        24
      </option>

      <option>
        25
      </option>

      <option>
        26
      </option>

      <option>
        27
      </option>

      <option>
        28
      </option>

      <option>
        29
      </option>

      <option>
        30
      </option>
    </select> Miejsce <select name="miejsce">
      <option selected="selected">
        A
      </option>

      <option>
        B
      </option>

      <option>
        C
      </option>

      <option>
        D
      </option>

      <option>
        E
      </option>

      <option>
        F
      </option>
    </select>
  </div>
  <hr class="c1" color="#00000" size="2px" width="99%" />

  <p>Twoje rezerwacje</p>

  <div id="reservationMade"></div>

  <p>XXXXXXXXXXXXXXX</p>

  <p><input value="Wr&#243;c do rezerwacji" type="submit" /></p>

  <div class="c2">
    <form action="https://www.paypal.com/pl/home">
      <h3>Zap&#179;a&#230;:</h3><input value="Paypal" onclick=
      "window.location.href='https://www.paypal.com/pl/home'" type="button" />
    </form>
  </div>
  <hr class="c1" color="#00000" size="2px" width="99%" />

  <p>Zap&#179;acone</p>

  <p>na MAILA ZOSTA&#163;Y WYS&#163;ANE SZCZEG&#211;&#163;Y REZERWACJI</p>
  <hr class="c1" color="#00000" size="2px" width="99%" />

  <div id="ui-datepicker-div" class=
  "ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>

  <div class="igtranslator-main-div c3">
    <iframe scrolling="no" class="igtranslator-iframe" src="about:blank" frameborder=
    "0"></iframe>
  </div>

  <div title="Click to Show Translation" class="igtranslator-activator-icon bounceIn c4">
  </div>
</body>
</html>

my java

   @Test
    public void paypal() {
        driver.findElement(By.xpath("//input[@value='Paypal']")).click();

        System.out.println("Current page title is : " + driver.getTitle() + ", time: " + System.currentTimeMillis());

    }

and I got error:

 org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//input[@value='Paypal']"}
Command duration or timeout: 5.10 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12'
System info: host: '471B07N', ip: '192.168.100.184', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_65'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=42.0, platform=WINDOWS, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 1f8f5d21-e52d-4b5b-b22e-31e615137579
*** Element info: {Using=xpath, value=//input[@value='Paypal']}
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:647)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:353)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:490)
    at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:345)
    at com.selenium.tests.testSuite1.HomePage.paypal(HomePage.java:27)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:821)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1131)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:124)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
    at org.testng.TestRunner.privateRun(TestRunner.java:773)
    at org.testng.TestRunner.run(TestRunner.java:623)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
    at org.testng.SuiteRunner.run(SuiteRunner.java:259)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
    at org.testng.TestNG.run(TestNG.java:1018)
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//input[@value='Paypal']"}
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12'
System info: host: '471B07N', ip: '192.168.100.184', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_65'
Driver info: driver.version: unknown
    at <anonymous class>.FirefoxDriver.prototype.findElementInternal_(file:///C:/Users/wojkrz/AppData/Local/Temp/anonymous1649881075161346457webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10659)
    at <anonymous class>.fxdriver.Timer.prototype.setTimeout/<.notify(file:///C:/Users/wojkrz/AppData/Local/Temp/anonymous1649881075161346457webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:621)

Do you have any ideas?

naXa stands with Ukraine
  • 35,493
  • 19
  • 190
  • 259

3 Answers3

0

Put a wait or sleep before:

driver.findElement(By.xpath("//input[@value='Paypal']")).click();

and see if it can locate your element then, then it is just a timing issue.

or alternatively split your code:

WebElement element = driver.findElement(By.xpath("//input[@value='Paypal']"));
sleep(1000);
//always better to add a wait than a sleep. Sleep is only to test if it is the issue
element.click();

I suspect when you are trying to locate your element, it has not yet loaded.

Cnel
  • 41
  • 6
-1

Try this,

@Test
public void paypal() {
    Thread.sleep(3000);
    driver.findElement(By.xpath("//input[@value='Paypal']")).click();
    System.out.println("Current page title is : " + driver.getTitle() + ", time: " + System.currentTimeMillis());
}
ssuperczynski
  • 3,190
  • 3
  • 44
  • 61
-1

you could use explicit wait:

(new WebDriverWait(driver, 30)).withMessage("Waited too long for Paypal-Button").until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@value='Paypal']")));
driver.findElement(By.xpath("//input[@value='Paypal']")).click();
metar
  • 434
  • 7
  • 17