Как динамически выбирать фрейм в Salesforce? - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь автоматизировать сценарий, используя Kantu в Salesforce.В основном, я прохожу некоторые выпадающие идентификаторы и выбираю правильные значения, и все работает, ЕСЛИ значение selectFrame в начале верное.

Проблема в том, что Salesforce обновляет идентификатор iframe каждый раз, когда обновляется страница или возникает новый случайоткрыт (т.е. ext-comp-1018 | ext-comp-1035 | ext-comp-1048 и т. д.)

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

{

   "Name": "SFDC_Auto",

   "CreationDate": "2019-3-25",

   "Commands": [

    {
      "Command": "selectFrame",
      "Target": "id=ext-comp-1018",
      "Value": ""
    },
    {
      "Command": "select",
      "Target": "id=cas5",
      "Value": "label=Escalation"
    },

Я видел запись , в которой упоминалось, что это будет решением, но я не уверен, как реализовать это в Kantu: frames= @ driver.find_elements (: xpath, '// iframe [начинается с (@ id, ext- comp-)]') @ driver.switch_to.frame frames 1

ИтакПока я мог бы сделать эту работу: xpath = // iframe [начинается с (@ id, ext-comp-)], однако это ничего не делает.Он читает нормально, но затем останавливается на следующем шаге, говоря, что ID CAS5 не распознан.

Может кто-нибудь помочь?

Спасибо,

1 Ответ

0 голосов
/ 26 марта 2019

Проблема в том, что Salesforce обновляет идентификатор iframe

В дополнение к идентификатору iframe вы также можете использовать iframe index = 0 (или 1,2, ..) в select frame . Это должно оставаться постоянным, даже если идентификатор меняется:

open | https://a9t9.com/kantu/demo/iframes  
selectFrame | relative=top  
selectFrame | index=0   
click | css=button.ytp-large-play-button.ytp-button

В качестве альтернативного решения , вы рассматривали возможность использования XClick (image) или XClick (ocr=text). Поскольку эти команды работают визуально, это позволяет избежать поиска правильного iframe; -)

Вот сообщение на форуме, в котором используется этот метод для решения клика на видео на YouTube внутри iframe:

https://forum.a9t9.com/t/embedded-video-problem/1324/2

Screencast: https://www.youtube.com/watch?v=4aNs9BnsodA

Третий метод - использовать sourceExtract, чтобы найти новый идентификатор кадра в исходном коде, извлечь его, а затем использовать его в качестве входных данных для selectFrame. Но первое предложение гораздо проще и должно сработать.

...