Selenium Ruby - переключить кадр по атрибуту класса

Я использую привязки Selenium Ruby и пытаюсь заставить WebDriver переключиться на iFrame, который можно идентифицировать только по атрибуту класса.

По сути, я пытаюсь достичь эквивалента этого кода Java:
driver.switchTo().frame(driver.findElement(By.className("my-iframe-class")));
но мне это не удается, так как оболочка Ruby принимает только атрибуты id или name в driver.switch_to.frame('some-id-or-name')

Любые предложения о том, как я могу переключать кадры по классу в Ruby?

Вот пример HTML:

<html>
  <head></head>
  <body>
    <iframe class="my-iframe-class">
      <p>iframe body</p>
    </iframe>
  </body>
</html>

person eladr    schedule 31.05.2016    source источник
comment
Вы решили это?   -  person FedeH    schedule 16.07.2018


Ответы (1)


В ruby docs на github говорится, что вы можете сделать:

driver.switch_to.frame driver.find_element(:class, 'some-frame') # frame element

Обратите внимание, что я не использовал привязки ruby, поэтому я не могу сказать вам, правильно ли это.

person Mobrockers    schedule 31.05.2016
comment
Спасибо за ваш ответ, но, к сожалению, это не работает. Возможно, потому что в моем случае нет атрибута id. Как видно из исходного кода, для функции "frame" требуется "id" github.com/SeleniumHQ/selenium/blob/master/rb/lib/selenium/ (строки 36–38), чтобы передать его github.com/SeleniumHQ/selenium/blob/master/rb/lib /селен/ (строки 205-207) - person eladr; 31.05.2016
comment
Я мало что знаю о ruby, но в документации, на которую я ссылался, создается впечатление, что вы можете передать веб-элемент функции switch_to.frame, используя driver.find_element. Поскольку driver.find_element может принимать имя класса или другой локатор, в отличие от функции switch_to.frame, я думаю, что мой пример будет работать. Обратите внимание, что я говорю find_element использовать :class, а не :id. - person Mobrockers; 31.05.2016