Как получить доступ к ссылке div / iframe / [a]?

csharp
webdriver
selenium
Теги: #<Tag:0x00007fedbbb5a698> #<Tag:0x00007fedbbb5a468> #<Tag:0x00007fedbbb5a288>

(It Ot) #1

Используется: WebDriver, С#

При рассмотрении кода страницы в Хроме, выражение css selector “#watch7-sidebar-ads iframe” подсвечивает iframe.
Как сделать чтобы подсвечивалось и a[id=“aw0”], которое находится в iframe.

Причём нужно, чтобы выделялось любое “a”, невзирая на id, т.к. id тоже может меняться.
id iframe тоже периодически меняется в зависимости от обновления страницы.

Код страницы

<div id="companion_ad_div" style="visibility: visible;"> 
	<iframe id="ads_frame1" name="_ads_frame1" width="undefined" height="250" frameborder="0" src="ссылка.... УДАЛИЛ" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" cd_frame_id_="91434f5dfcf870257070e9f48c769cf7"> 
#document
<!DOCTYPE html> 
	<html>
		<head>
			<script>var casm=["",0,null,0];</script>
			<style> ... </style>
			<script>/--> </script>
		</head>
		<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="background:transparent">
			<div id="_image_div" style="height: 250px; width: 300px; overflow:hidden; position:absolute">
				<a id="aw0" target="_blank" href="https://site.g.doubleclick.net/aclk?sa=L&amp;ai=CQAOob5RGWLKpN5GzmAT6xqnIBP2ciMVH1MvCldsE/"><img src="https://tpc.syndication.com/simgad/14397548859480715033" border="0" width="300" alt="" class="img_ad" onload="">
				</a>
			</div>
		</body>
	</html>
	</iframe>
</div>

ВОПРОС
1. Как получить доступ через css selector к элементу “a”, который находится в iframe?
2. Можно ли получить доступ к “a” не переключая код на iframe, а напрямую через cssselector?


(Ray Romanov) #2

Без переключения никак, т.к. iframe считается как отдельная страница…


(It Ot) #3

А чем-нибудь таким извлечь?
Driver.FindElement(By.CssSelector("#watch7-sidebar-ads iframe")).GetAttribute(“innerHTML”);

Только CssSelector правильно прописать.

В приведённой мной строке извлекается iframe без <html>


(Ray Romanov) #4

Совершенно верно, т.к. данный фрейм относится к этой странице, а вот содержимое повторяю это другая (чужая) страница… как соседнее окошко (вкладка)


(Bolatbek) #5

Ответ неверный - без переключения во фрейм можно получить элемент из фрейма.


(It Ot) #6

Вы бы не могли подсказать как это можно сделать?
Т.е. как получить данные из фрейма без переключения во фрейм?


(Сержан Есенбек) #7

(new WebDriverWait(getWebDriver(), 50))
.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id(“ads_frame1”))); // вход на фрейм

$("#aw0).waitUntil(visible, 15000).click();

getWebDriver().switchTo().defaultContent();


(Nik Sidorenko) #8

Поделитесь знаниями плиз. Как это делается?