3

Я имею Javascript OnClick как:В селене Функция привязки якоря onclick не работает?

<a href="#" id="download" onclick="Exceldownload('sites')"> 
    <i class="fa fa-download card-down-icon" aria-hidden="true"></i> 
</a> 

В селеном я добавил так:

public void x() { 
    driver.findElement(By.xpath("//a[@onclick='Exceldownload("sites")']")).click(); 
} 

Но я получаю ошибку как элемент не кликабельны.

+0

Вы должны проверить, во-первых, если другой элемент накладывается на it..in этого случая следует подождать, пока элемент не будет кликабелен .. –

+0

это возможно для вызова функции непосредственно вместо идентификатора тега привязки? –

+0

Да, но это неправильное поведение тестирования. вам нужно определить фактическую проблему для клика .. –

ответ

1

Возможности

  1. Дубликат веб-элемент с таким же XPath на странице.
  2. Элемент может быть в рамке. Вам нужно переключиться на кадр
  3. Попытка доступа к веб-элементу перед загрузкой страницы. Дайте некоторое время ожидания.

Если все правильно, попробуйте щелкнуть по скрипту java, как показано в фрагменте.

WebElement element =driver.findElement(By.xpath("//a[@onclick='Exceldownload("sites")']")); 
 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
 
executor.executeScript("arguments[0].click();", element);

+0

показывает ошибку как «a [@ onclick = 'Exceldownload (" sites ")']" неверно выражение Xpath –

+0

удаляет двойные кавычки с "сайтов" и делает это ' места'. или Элемент WebElement = driver.findElement (By.xpath ("// a [@ onclick = 'Exceldownload (" + "сайты" + ")']")); – Lucky

+0

По-прежнему такая же ошибка, как Недопустимый элемент Состояние –

1

элемент не кликабелен

Эта проблема может иметь несколько причин, как показано ниже:

  • Maybe другой элемент, как погрузочные изображения накладки элемент и исчезают уши после полной загрузки элемента. Тогда вы должны подождать, пока элемент не кликабельна:

    new WebDriverWait(driver, 60).until(
        ExpectedConditions.elementToBeClickable(By.id("download"))).click(); 
    
  • Может быть, есть несколько элементов, присутствующих с тем же локатора, и, к сожалению, вы размещения скрытый элемент, который присутствует на странице, но не кликабельна. Затем вам нужно использовать уникальный локатор.

  • Возможно, это произошло из-за проблемы с дизайном. Возможно, какой-то другой элемент накладывает элемент на элемент и получает событие click. Затем вы можете использовать JavascriptExecutor в качестве альтернативного решения:

    ((JavascriptExecutor)driver).executeScript(
        "arguments[0].click();", driver.findElement(By.id("download"))); 
    
+0

Элемент не доступен для просмотра Ошибка –

+0

@shreyaS, в этом случае у вас есть эта ошибка ?? –