2016-07-29 3 views
1

Я использую selenium webdriver для автоматизации веб-страницы. Мой код селена не идентифицирует ссылку. Я получаю следующую ошибку.Невозможно нажать любую ссылку на веб-странице

Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/font/font/b/a[2]"} (Session info: chrome=44.0.2403.89)

Это код, который я использую.

public static void main(String[] args) 
{  
    System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\chromedriver.exe"); 

     WebDriver driver = new ChromeDriver(); 
     driver.get("url"); 
     driver.findElement(By.xpath("/html/body/font/font/b/a[2]")).click(); 
} 

Заранее спасибо

+1

Не мог бы вы поделиться вам HTML вашей ссылки как Что ж?? –

+0

ОК Я уже предоставил его в качестве ответа, попробуйте и дайте мне знать, если проблема. :) –

ответ

0

Если вы получаете NoSuchElementException как ваш при условии исключения Там будут могут быть следующие причины: -

  • мая вы находитесь с неправильным xpath, поэтому вам нужно поделиться HTML для лучшего решения локатора.

  • Может быть, когда вы собираетесь найти элемент, он не будет присутствовать на DOM, поэтому вы должны реализовать WebDriverWait подождать, пока элемент видимого и кликабельны, как показано ниже: -

    WebDriverWait wait = new WebDriverWait(driver, 10); 
    WebElement el = wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Duty Office"))); 
    el.click(); 
    
  • Может быть этот элемент находится внутри любого frame или iframe. Если да, то вам нужно переключить, что frame или iframe, прежде чем найти элемент, как показано ниже: -

    WebDriverWait wait = new WebDriverWait(driver, 10); 
    
    //Find frame or iframe and switch 
    wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("your frame id or name")); 
    //Now find the element 
    WebElement el = wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Duty Office"))); 
    el.click(); 
    
    //Once all your stuff done with this frame need to switch back to default 
    driver.switchTo().defaultContent(); 
    

Надеется, что это помогает ... :)

+0

Спасибо Saurabh, он сделал трюк. Но теперь после щелчка ссылки появляется еще одна ошибка Исключение в потоке «main» org.openqa.selenium.WebDriverException: неизвестная ошибка: ссылка на элемент не возвращается скриптом (информация сессии: chrome = 44.0.2403.89) – Elaine

+0

@Elaine this происходят из-за усталости элемента. Вы можете сохранить действия веб-элемента и выполнить действие до тех пор, пока страница не изменится. После того, как страница была изменена, селен удаляет ссылку элемента из своего случая, в этом случае вам нужно снова найти элемент ... :) –

+0

ohh ok. Но если следующая страница (нажатие на ссылку перемещается на новую страницу) имеет ту же проблему, то я могу использовать оператор ожидания, который уже был использован, или мне нужно снова создать новую команду ожидания?на новой странице я попытался найти новый элемент, но получаю ту же проблему, что и я, в первую очередь. – Elaine

0

Есть две возможные ситуации

1) Вы можете ввести неверный URL-адрес

2) ваш ожидаемый элемент XPath является неправильным.

пожалуйста подтвердите ваш XPath с

этот tolol: https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl?hl=en

public static void main(String[] args) { 
    System.setProperty("webdriver.chrome.driver", "C:\Program Files (x86)\Google\Chrome\chromedriver.exe"); 
    WebDriver driver = new ChromeDriver(); 
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    driver.get("Valid url"); 

driver.findElement(By.xpath("your valid XPATH")).click(); 

    driver.close(); 
} 
+0

Я дал правильный URL-адрес, я могу перейти по URL-адресу, но не могу нажать любую ссылку или любую кнопку или ввести данные в текстовое поле на странице. – Elaine

+0

вы пытаетесь проверить вас Xpath с предоставленным плагином – jayesh

+0

Да, я подтвердил – Elaine