примечание: решение в оболочке Selenium или API Splinter for Selenium подойдет!
У меня возникли проблемы при взаимодействии с iframes на Twitter.com с использованием API Splinter для Python.
Например,
with Browser('firefox', profile_preferences= proxySettings) as browser:
#...login and do other stuff here
browser.find_by_id('global-new-tweet-button').click()
это вызывает всплывающее окно для ввода твита.
Как мне взаимодействовать с этим новым полем с помощью Splinter, чтобы: 1) заполнить сообщение 2) нажать «твитнуть» (отправить) ... программно, конечно.
Я попытался проверить элемент, но он, похоже, не вложен в iframe, однако он нацелен на iframe. Поэтому я не уверен, как найти/взаимодействовать с элементами в этом всплывающем окне.
Я попытался вручную ввести сообщение, а затем программно нажать кнопку твита:
browser.find_by_css('.btn.primary-btn.tweet-action.tweet-btn.js-tweet-btn').click()
..но я получаю сообщение об ошибке:
ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
Stacktrace:
at fxdriver.preconditions.visible (file:///var/folders/z1/8rqrglqn2dj8_yj1z2fv5j700000gn/T/tmppRsJvd/extensions/[email protected]/components/command-processor.js:10092)
at DelayedCommand.prototype.checkPreconditions_ (file:///var/folders/z1/8rqrglqn2dj8_yj1z2fv5j700000gn/T/tmppRsJvd/extensions/[email protected]/components/command-processor.js:12644)
at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/z1/8rqrglqn2dj8_yj1z2fv5j700000gn/T/tmppRsJvd/extensions/[email protected]/components/command-processor.js:12661)
at DelayedCommand.prototype.executeInternal_ (file:///var/folders/z1/8rqrglqn2dj8_yj1z2fv5j700000gn/T/tmppRsJvd/extensions/[email protected]/components/command-processor.js:12666)
at DelayedCommand.prototype.execute/< (file:///var/folders/z1/8rqrglqn2dj8_yj1z2fv5j700000gn/T/tmppRsJvd/extensions/[email protected]/components/command-processor.js:12608)
Я строго хочу достичь своей цели, используя Splinter, поэтому, пожалуйста, не предлагайте альтернатив, я знаю, что есть другие способы. Заранее спасибо!