Нажмите на ссылку во всплывающем окне iframe, используя Python Selenium - PullRequest
0 голосов
/ 02 апреля 2020

Я пишу сценарий для автоматизации ввода некоторых данных в наше программное обеспечение ERP.

На странице, над которой я работаю, мы вводим элементы спецификации (BOM) в веб-форму. Существует «сборщик», по которому вы можете щелкнуть, чтобы проверить, что вы ввели, существует в системе. Этот сборщик имеет значок бинокля, вы можете ввести первые пару символов вашего предмета и вызвать список всех совпадений, которые начинаются с этой последовательности символов.

Для моего сценария я хочу ввести номер элемента, нажмите «сборщик» и затем выберите первую гиперссылку, которая соответствует номеру элемента, который я ввел.

Для этого конкретного c случая я ввожу 'txtlstItem' (номер позиции) WS100039, и я думаю, что я понял это:

  • Вам необходимо введите номер элемента в поле
  • После того, как вы введете элемент и нажмете на «сборщик», появится iframe (__Dialog_Iframe_Container_1)
  • Когда я щелкну правой кнопкой мыши на первой ссылке iframe я получаю следующую информацию:
  • iframe XPath: //iframe[@id='__Dialog_Iframe_Container_1']
  • Rel XPath: //td[@class='MSP_Highlight']//span[@class='MSP_LinkText'][contains(text(),'WS100000')]

               WebDriverWait(driver, wait_time).until(EC.presence_of_element_located((By.XPATH, "//input[@name='txtlstItem']"))).send_keys(excel_BOM_item['txtlstItem'])
                driver.find_element(By.ID,"lstItemImage").click()
                iframe = driver.find_element_by_id("__Dialog_Iframe_Container_1")
                print('About to switch to iframe')
                driver.switch_to.frame(iframe)
                print('Switched to iframe')
                driver.find_element_by_xpath("//td[@class='MSP_Highlight']//span[@class='MSP_LinkText'][contains(text(),'" + excel_BOM_item['txtlstItem'] + "')]").click()


Я запустил это и куча вариаций это без везения. Я продолжаю получать следующее сообщение: selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//td[@class='MSP_Highlight']//span[@class='MSP_LinkText'][contains(text(),'WS100039')]"}

Чтобы попытаться устранить неполадки, я переключился на вышеупомянутый iframe и затем запустил это:

                ids = driver.find_elements_by_xpath('//*[@id]')
                for ii in ids:
                    print(ii.get_attribute('id'))

И ничего не распечатано. Меня это очень удивляет - я считаю, что на странице есть несколько iframe, но с помощью элемента проверки правой кнопкой мыши, я не понимаю, как я мог пытаться получить доступ к неправильному iframe.

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