2016-12-16 1 views
-2

Попытка нажать на службу с помощью XPathне в состоянии нажать элемент

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/header/section/div[2]/div/div/ul/li[2]/a"))); 

driver.findElement(By.xpath("/html/body/header/section/div[2]/div/div/ul/li[2]/a")).click(); 

но элемент не получает выбранный/clicked.please помочь

+1

у вас нет более простой способ, чтобы получить этот элемент? основанный на одном id от элемента, который является родителем? Вы не получаете 'NoSuchElementException'? –

+2

@john, можете ли вы предоставить правильный источник страницы, поэтому было бы легко найти, какой элемент не доступен для кликов. – NarendraR

+2

Добавьте образец «HTML» для упомянутого элемента. Также добавьте журнал исключений, если у вас есть – Andersson

ответ

0

driver.findElement(By.xpath("//*[@id='menu1']"))

попытаться использовать это. еще

driver.findElement(By.id("menu1")) 
+0

не работает .... – john

+0

какая проблема возникает –

+0

нет ошибки, но не удалось нажать – john

0

попробовать следующим образом (если элемент не находится внутри рамы):

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@id='menu1']/span[text()='Service']"))); 

driver.findElement(By.xpath("//a[@id='menu1']/span[text()='Service']")).click(); 

Если выше код не работает. то, скорее всего, элемент находится внутри кадра.

Если элемент находится внутри рамки (элемент является дочерним элементом тега iframe), тогда сначала переключитесь на элемент и найдите элемент.

Мой подробный ответ о переключении B/W кадров здесь, in selenium web driver how to choose the correct iframe

+0

Никогда не предпочитайте использовать абсолютный XPath (начиная с элемента 'html'), который имеет более высокий процент отказов. Всегда предпочитайте относительные XPaths (используйте атрибуты элементов, id и т. Д., Если они недоступны, используйте ближайшего родителя, у которого есть id/attributes и т. Д., А затем найдите его). –