Как найти динамический кадр с содержимым - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь переключить свой iframe на iframe, идентификатор которого меняется каждый раз.Исходный код здесь:

<iframe class="card-fields-iframe ui-droppable" frameborder="0" id="card-fields-verification_value-f9yavo67out00000" name="card-fields-verification_value-f9yavo67out00000" scrolling="no" src="https://checkout.shopifycs.com/verification_value?identifier=b5fa1aecc18e4f685d7408c699c2ac5b&amp;location=https%3A%2F%2Fyeezysupply.com%2F17655971%2Fcheckouts%2Fb5fa1aecc18e4f685d7408c699c2ac5b%3F_ga%3D2.184035750.1808724638.1545611726-2044927600.1545611726&amp;dir=ltr" title="Field container for: CVV" style="height: 42px;" xpath="1"></iframe>

Это то, что я пробовал.Это работало на других фреймах, но не работало на этом.Если есть другой подход, о котором я не знаю, пожалуйста, дайте мне знать.

Ответы [ 4 ]

0 голосов
/ 26 декабря 2018

, если вы склонны к Идентификации Iframe на основе SRC значения:

, вы можете использовать следующий код, используя cssSelector подстановочный знак *, то есть содержит подстроку:

WebElement cVV = driver.findElement(By.cssSelector("iframe[src*='verification']"));
driver.switchTo().frame(cVV);
0 голосов
/ 24 декабря 2018

Чтобы переключиться на динамический <iframe>, вам необходимо:

  • Индуцировать WebDriverWait , чтобы требуемый кадр был доступен, и переключиться на него .
  • Можно использовать следующее решение:

Здесь вы можете найти соответствующую дискуссию по Способы работы с #document в iframe

0 голосов
/ 24 декабря 2018

Если предоставленный исходный HTML-код не изменен, я бы предложил несколько вещей.

Если вы напрямую переключаетесь на этот фрейм со родительской страницы, можете попробовать альтернативные атрибуты.В противном случае убедитесь, что вы сначала переключаетесь на DefaultContent, а затем переходите к этому кадру.

  1. Выберите другие атрибуты.Например, можно использовать Title.Надеюсь, это не изменится.
  2. Я мог бы видеть XPATH="1" как атрибут.Если это не изменится, вы можете просто сказать iframe[XPATH="1"]
0 голосов
/ 24 декабря 2018

Вы можете попробовать использовать title = "Контейнер поля для: CVV"

xpath="//iframe[@title='Field container for: CVV']"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...