Ошибка при поиске элемента в selenium2 - PullRequest
0 голосов
/ 13 сентября 2011

Я использую селен 2.0 с testNG. При использовании XPATH или CSS для элемента, чтобы найти его, выдается сообщение об ошибке «невозможно найти элемент». Я запрограммировал в Java как ниже:

public class mytest {

    public static WebDriver driver;
    public Alert alert;

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        driver=new FirefoxDriver();

    driver.get("http://localhost:4503/xyz.html");

    }

    public static void clickButton(WebDriver driver, String identifyBy, String locator){
        if (identifyBy.equalsIgnoreCase("xpath")){
            driver.findElement(By.xpath(locator)).click();
        }else if (identifyBy.equalsIgnoreCase("id")){
            driver.findElement(By.id(locator)).click();
        }else if (identifyBy.equalsIgnoreCase("name")){
            driver.findElement(By.name(locator)).click();
        }

    }

    public static void typeinEditbox(WebDriver driver, String identifyBy, String locator, String valuetoType){
        if (identifyBy.equalsIgnoreCase("xpath")){
            driver.findElement(By.xpath(locator)).sendKeys(valuetoType);
        }else if (identifyBy.equalsIgnoreCase("id")){
            driver.findElement(By.id(locator)).sendKeys(valuetoType);
        }else if (identifyBy.equalsIgnoreCase("name")){
            driver.findElement(By.name(locator)).sendKeys(valuetoType);
        }

    }


    public static void openApplication(WebDriver driver, String url) {
        driver.get(url);
    }






    @Test
    public void testAcrolinxApplication() throws InterruptedException {
        openApplication(driver,"http://xyz.com");
        typeinEditbox(driver,"name","p_user","xxx");
        typeinEditbox(driver,"name","p_pas","yyy");
        clickButton(driver,"id","input-submit");

/*Up to this its working fine …..

At below line this throws error could not locate the xpath element "//a[@id='cq-gen100']/em/span/span" BUT THIS IS WOKING FINE IN Selenium1.0 api that is with 
selenium.click("//a[@id='cq-gen100']/em/span/span"); */

driver.findElement(By.xpath("//a[@id='cq-gen100']/em/span/span")).click();




    }

}

Пожалуйста, помогите мне в этом. Заранее спасибо…

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Убедитесь, что XPath / CSS-запрос правильный

Загрузите что-то вроде Firefinder или что-нибудь еще, где вы можете протестировать запрос XPath прямо на странице. Если вы точно знаете, что ваш запрос верен, вы можете сузить проблему в Selenium.

Сузить проблему в селене

Например, если ваш запрос "//a[@id='cq-gen100']/em/span/span" не работает, попробуйте основание запроса и посмотрите, найдет ли его Selenium (пока не беспокойтесь о клике). Увеличивайте оттуда, пока ошибка не появится снова.

Пример:

driver.findElement (By.xpath ("// a [@ id = 'cq-gen100']"); // работает? driver.findElement (By.xpath ("// a [@ id = 'cq-gen100'] / em"); // работает? driver.findElement (By.xpath ("// a [@ id = 'cq-gen100'] / em / span"); // работает? // и т.д.

0 голосов
/ 16 сентября 2011

Я использовал driver.manage (). Timeouts (). ImplicitlyWait (10, TimeUnit.SECONDS);подождать какое-то время, но теперь это работает.

...