2014-11-16 2 views
0

전적으로 셀레늄과 XPath를 처음 사용합니다. 오늘은 Selenium RC를 사용하여 간단한 스크립트를 실행하려고 시도한 첫 번째 시간입니다. 아래 코드를 찾으십시오.셀레늄 XPATH가 올바르지 않아 "요소를 찾을 수 없습니다"

package com.rcdemo; 

import org.junit.Test; 
import org.openqa.selenium.By; 

import com.thoughtworks.selenium.DefaultSelenium; 
import com.thoughtworks.selenium.Selenium; 

public class MathTest { 

    @SuppressWarnings("deprecation") 
    public static void main(String[] args) throws InterruptedException { 

     //Instatiate the RC Server 
     Selenium selenium = new DefaultSelenium("localhost", 4444 , "*firefox C:/Program Files (x86)/Mozilla Firefox/firefox.exe", "http://www.calculator.net"); 
     selenium.start(); // Start 
     selenium.open("/"); // Open the URL 
     selenium.windowMaximize(); 

     // Click on Link Math Calculator 
     selenium.click("xpath=.//*[@id='menu']/div[3]/a"); 
     Thread.sleep(4500); // Wait for page load 

     // Click on Link Percent Calculator 
     selenium.click("xpath=//*[@id='content']/ul/li[3]/a"); 
     Thread.sleep(4000); // Wait for page load 


     // Focus on text Box 
     selenium.focus("name=cpar1"); 
     // enter a value in Text box 1 
     selenium.type("css=input[name=\"cpar1\"]", "10"); 

     // enter a value in Text box 2 
     selenium.focus("name=cpar2"); 
     selenium.type("css=input[name=\"cpar2\"]", "50"); 

     // Click Calculate button 
     selenium.click("xpath=.//*[@id='content']/table/tbody/tr/td[2]/input"); 

     // verify if the result is 5 
     String result = selenium.getText("//*[@id='content']/p[2]/span/font/b"); 
     System.out.println(result); 


     if (result == "5") { 
      System.out.println("Pass"); 
     } else { 
      System.out.println("Fail"); 
     } 
    } 
} 

문제는 상기 코드를 실행하는 경우, 예외가 getText() 라인에서 발생된다. Google 크롬의 개발자 도구에서 XPath를 복사했습니다. 수동으로 한 번 확인해도 동일한 XPath가 표시됩니다. 나는 오늘 아침부터 이것을위한 해결책을 찾으려고 노력했다. Selenium에서 요소를 찾으려면 어떻게해야합니까?

추 신 : 결과 변수에서 계산 후 결과를 캡처해야합니다. 예를 들어 10 % 50 = 5입니다.이 5 가지를 캡처해야합니다.

답변

1

'결과'가 채워지기를 기다려야합니다.

//add this line 
    if (!selenium.isElementPresent("//*[@id='content']/p[2]/span/font/b")){ 
    Thread.sleep(2000); 
    } 
    // verify if the result is 5 
    String result = selenium.getText("//*[@id='content']/p[2]/span/font/b"); 
    System.out.println(result); 

    //update this line 
    if (result.trim().equals("5")) 
    { 
     System.out.println("Pass"); 
    }else 
    { 
     System.out.println("Fail"); 
    } 

을 그리고 당신은 두 개의 문자열 값을 비교하는 .equals 방법을 사용합니다 : 여기

업데이트 된 코드, 그것은 당신을 위해 작동합니다.

주 - 더 나은 접근 방식은

+0

감사 surya..It는 괜찮 았는데 ... 등 waitForPageToLoad, waitForElementPresent (사용자 정의 방법)와 같은 동적 대기 방법과 Thread.sleep를 교체하는 것입니다. – user3196470

관련 문제