Ich automatisiere den Autoraptor CRM mit Splitter und alles lief glatt, bis es Zeit kam, eine Nachricht zu verfassen. Der E-Mail-Editor des CRM befindet sich in einem Iframe. Ich kann das iframe mit Splitter finden, aber ich kann es nicht bekommen, irgendetwas im Redakteur zu schreiben.Python Splitter füllen Text innerhalb iframe
Hier ist der HTML
<div id="cke_1_contents" class="cke_contents cke_reset" role="presentation" style="height: 200px;"><span id="cke_67" class="cke_voice_label">Press ALT 0 for help</span><iframe src="" frameborder="0" class="cke_wysiwyg_frame cke_reset" title="Rich Text Editor, email_body" aria-describedby="cke_67" tabindex="0" allowtransparency="true" style="width: 100%; height: 100%;"></iframe></div>
hier gelesen haben, ist die Python
#!/usr/bin/env python
from splinter import Browser
import urlparse
import time
# Creds
username = "[email protected]"
password = "spamspamspam..."
login_url = 'https://ar.autoraptor.com/login'
browser = Browser('chrome')
#help(browser)
# Go to login page
browser.visit(login_url)
# Fill in Username
browser.find_by_name('login').fill(username)
# Fill in
browser.find_by_name('password').fill(password)
# Click the login Button
browser.find_by_value('Log In').click()
# Navigate to upsheets
#browser.find_by_xpath('//*[@id="nav"]/li[4]/a').click()
# Navigate to least updated upsheets
url = "https://ar.autoraptor.com/upsheets?filter=active&sort=updated_at%5B1%5D"
browser.visit(url)
# Click on notifications
browser.find_by_xpath('//*[@id="nav"]/li[8]/div[1]').click()
time.sleep(5)
# Click on email
browser.find_by_xpath('//*[@id="notification-tab-incoming_email"]/div').click()
time.sleep(5)
# Read email
browser.find_by_text("Email from ").click()
# Send email
browser.find_by_id('newemailplaceholder').click()
time.sleep(5)
browser.find_by_id("cke_1_contents").fill("ftw")
#browser.quit()
Hier ist die Zurückverfolgungs
Traceback (most recent call last):
File "testbot.py", line 50, in <module>
browser.find_by_id("cke_1_contents").find_by_tag("iframe").fill("foo")
File "/home/ricky/.local/lib/python2.7/site-packages/splinter/driver/webdriver/__init__.py", line 529, in fill
self.value = value
File "/home/ricky/.local/lib/python2.7/site-packages/splinter/driver/webdriver/__init__.py", line 511, in _set_value
self._element.clear()
File "/home/ricky/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 92, in clear
self._execute(Command.CLEAR_ELEMENT)
File "/home/ricky/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 493, in _execute
return self._parent.execute(command, params)
File "/home/ricky/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
self.error_handler.check_response(response)
File "/home/ricky/.local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidElementStateException: Message: invalid element state: Element must be user-editable in order to clear it.
(Session info: chrome=59.0.3071.115)
(Driver info: chromedriver=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 4.10.0-26-generic x86_64)
Bitte geben Sie Ihren Code ein. Was passiert, wenn Sie es versuchen? – Guy
Anstatt das Element innerhalb des Iframes zu löschen, können Sie es zuerst auswählen? Holen Sie sich den Inhalt? Wenn nicht, ist der Wechsel zu iframe nicht erfolgreich und darauf müssen Sie sich konzentrieren. –