Лучший способ найти этот элемент в селене? - PullRequest
1 голос
/ 03 марта 2012

Например, вот часть источника:

<div id = "eg_1_2_3_0399483" style = "visibility: visible; display: block;">
    <iframe id = "default_23342522" src="http://example.com/random_string_skdfjgklsjklf" style = "height: 600px;">
...

<div id = "eg_238_2348927" style = "visibility: hidden; display: none;">
    <iframe ...

Видите ли, в источнике есть несколько iframe, что я действительно хочу найти, это <iframe id = "default_23342522" src="http://example.com/random_string_skdfjgklsjklf" style = "height: 600px;">, но id и src меняются каждый раз, когда вы загружаете страницу, поэтому в основном я бы сначала нашел <div id = "eg_1_2_3_0399483" style = "visibility: visible; display: block;"> затем перейдите к его дочернему узлу, проблема в том, как вы это делаете? Ну, я знаю, как найти первый элемент <div> так:

element = browser.find_elements_by_xpath("//div[@style='visibility: visible; display: block;']")

А потом?

Или, может быть, есть лучшие идеи о том, как найти элемент iframe выше?

1 Ответ

1 голос
/ 03 марта 2012

Попробуйте:

element = browser.find_elements_by_xpath("//div[@style='visibility: visible; display: block;']/iframe[@style='height: 600px;']")

Если вы хотите, чтобы каждый раз в указанном элементе div был только первый iframe (как показано в вашем ответе), введите

iframe=element[0]

Если вы хотитечтобы извлечь то, что находится внутри iframe, вы можете сделать это:

iframe_content = iframe.text

Альтернативный способ найти первый iframe указанного div - использовать аналогичную функцию, которая возвращает один элемент вместо списка:

element = browser.find_element_by_xpath("//div[@style='visibility: visible; display: block;']/iframe[1]")

Выше мы использовали find_element_by_xpath вместо find_elements_by_xpath , чтобы просто найти первый iframe указанного div.Помните, что я не определял iframe по его стилю (например, высота: 600 пикселей).Но это можно сделать и здесь аналогичным образом, как я объяснил выше, используя find_elements_by_xpath.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...