Невозможно щелкнуть элемент внутри iframe в IE - PullRequest
0 голосов
/ 15 февраля 2020

Я хочу щелкнуть элемент следующим образом:

//select[@name='instructionSelection']

Но с Selenium он не щелкает по IE 11.

HTML:

enter image description here

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Вы должны переключиться на iframe, используя name=InvoiceDeatils, прежде чем взаимодействовать с элементом.

Не уверен, какой язык вы используете. Предоставление фрагмента в python ниже.

driver.switch_to.frame(driver.find_element_by_name('InvoiceDeatils'))
# now click on the element
driver.find_element_by_xpath("//select[@name='instructionSelection']").click()
0 голосов
/ 16 февраля 2020

Поскольку требуемый элемент находится в пределах <iframe>, поэтому для вызова click() на элементе необходимо:

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

    • с использованием CSS_SELECTOR:

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[name='invoiceDeatils'][src*='invoiceDeatils']")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select[name='instructionSelection']"))).click()
      
    • с использованием XPATH :

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@name='invoiceDeatils' and contains(@src, 'invoiceDeatils')]")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//select[@name='instructionSelection']"))).click()
      
    • Примечание : необходимо добавить следующий импорт:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      

Ссылка

Соответствующее обсуждение можно найти в:

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