2017-02-02 3 views
1

Невозможно нажать на якорь внутри фрейма со значением href как javascript, используя селен.Невозможно щелкнуть по якорю внутри кадра с указанием значения href как javascript, используя selenium

@ Примечание: я мог бы вручную щелкнуть/вызвать javascript из консоли разработчика IE, все выглядит хорошо. Вопрос только через селен.

Вот исходный код страницы, как

<html> 
<body> 
<p>  
<iframe name="iframe1" width="100" height="218" src="about:blank" frameborder="0" marginwidth="0" "marginheight="0" scrolling="yes">  
<html> 
<body>  
<div class="className" id="DivName"onmouseover="startLinkHover(0,70)" onmouseout="stopLinkHover()"> 
<a name="link0" href="javascript:function()" shape=""> This is link 1 </a> 
</div> 
</body> 
</html> 
</iframe> 
</p> 
</body> 
</html> 

Я работаю с C#, IE и селена

Selenium.WebDriver.IEDriver" version="2.53.1.1" 
Selenium.WebDriver" version="3.0.0" 
Selenium.Support" version="3.0.0" 
IE 11 (As my web application only support IE) 

Вот что я пробовал: Как это страница, состоящая из фрейма

1) Я переключаюсь на iframe и нахожу якорь с использованием имени и нажимаю

driver.SwitchTo().Frame(driver.FindElement(By.Name("iframe1")); 
driver.FindElement(By.XPath("//a[@name='link0']")).click(); 

2) Я также попытался извлечь свойство href в строчную переменную и попытался выполнить javascript с помощью Javascript-исполнителя.

driver.SwitchTo().Frame(driver.FindElement(By.Name("iframe1")); 

var js=driver.FindElement(By.XPath("//a[@name='link0']")).GetAttribute("href"); 

    var jsDriver = (IJavaScriptExecutor)driver; 
    jsDriver.ExecuteScript(js); 

Пожалуйста, простите, если какая-либо опечатка, как я не хочу, чтобы опубликовать исходный HTML здесь я объяснил свою проблему с образцом.

Спасибо

+0

Почему ' This is link 1'? does 'href =" javascript: function() "' возвращает страницу с сервера, или я вижу это неправильно? где выполняется 'href =" javascript: function() "'? По __ «Нельзя щелкнуть по якорю внутри рамки» __ вы имеете в виду, что он ничего не делает? есть ли ошибки в консоли? –

+0

Спасибо Диего, нет. Он не возвращает страницу. Странно, что они использовали вызов функции javascript из href вместо «onclick» и т. Д. Невозможно щелкнуть в том смысле, что он пытается вызвать функцию, но сразу возвращается без каких-либо исключений. На консоли нет ошибок. Это приложение третьей стороны, с которым мы пытаемся интегрироваться, и у меня нет большой помощи. Я хотел узнать, что не так с тем, как я пытаюсь это сделать? и любой другой лучший подход для этого. И другая неприятная вещь - F12 отключен для отладки при прохождении через селен. – Programming

+0

Есть ли у вас какие-либо ошибки при первой попытке? Вы уверены, что находитесь в правильном iframe, и у вас нет другого до этого с похожим именем? – lauda

ответ

0

Наконец мне удалось решить эту проблему путем перезагрузки проекта из системы управления версиями после наведения .NET Framework целевой версии до 4.5 вместо 4.52 (не знаю, почему это было бы?).

После проведенных исследований было доказано, что проблема связана не с селеном, щелкнувшим элемент, а с выполнением скрипта java после этого при загрузке страницы.

Смежные вопросы