Как обработать хром-уведомление в селене?

Давайте используем то, что предложил Tymoteusz для ролей:

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

Я создал aaa.yaml с этим контентом:

---
- hosts: all
  remote_user: root
  roles:
    - check
    - { role: doit, when: "check.stdout == '0'" }
...

, затем роль check в roles/check/tasks/main.yaml:

---
- name: "Check if we should continue"
  shell:
    echo $(( $RANDOM % 2 ))
  register: check
- debug:
    var: check.stdout
...

, а затем роль doit в roles/doit/tasks/main.yaml:

---
- name: "Do it only on systems where check returned 0"
  command:
    date
...

И это был результат:

TASK [check : Check if we should continue] *************************************
Thursday 06 October 2016  21:49:49 +0200 (0:00:09.800)       0:00:09.832 ****** 
changed: [capsule.example.com]
changed: [monitoring.example.com]
changed: [satellite.example.com]
changed: [docker.example.com]

TASK [check : debug] ***********************************************************
Thursday 06 October 2016  21:49:55 +0200 (0:00:05.171)       0:00:15.004 ****** 
ok: [monitoring.example.com] => {
    "check.stdout": "0"
}
ok: [satellite.example.com] => {
    "check.stdout": "1"
}
ok: [capsule.example.com] => {
    "check.stdout": "0"
}
ok: [docker.example.com] => {
    "check.stdout": "0"
}

TASK [doit : Do it only on systems where check returned 0] *********************
Thursday 06 October 2016  21:49:55 +0200 (0:00:00.072)       0:00:15.076 ****** 
skipping: [satellite.example.com]
changed: [capsule.example.com]
changed: [docker.example.com]
changed: [monitoring.example.com]

Это не идеально: выглядит вы будете видеть, что пропускает статус для всех задач для пропущенных систем, но может сделать трюк.

0
задан SiKing 15 January 2019 в 16:45
поделиться

1 ответ

Это iFrame отсюда NosuchElement exception.

Вам нужно switchTo().frame, в вашем случае это должно выглядеть так:

driver.switchTo().frame("notification-frame-~5586290a");

После переключения в iframe вы можете нажимать кнопки там ...

В вашем случае, если вы хотите закрыть его, сделайте что-то вроде:

driver.FindElementsByXPath('//*[@class="wewidgeticon we_close icon-large"]').click()

Если вы не закрываете его, но хотите вернуться к кадру по умолчанию, просто используйте:

driver.switchTo().defaultContent(); 

Надеюсь, это поможет вам!

0
ответ дан Moshe Slavin 15 January 2019 в 16:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: