2014-01-18 15 views
5

Ich habe den folgenden Code für auf einer Website anmelden und schreiben etwas in einem ForumGriff tinymce Fenster mit Python, Selen und PhantomJS

driver = webdriver.PhantomJS() 

Username = "username" 
Password = "password" 

driver.get(LoginPage) 
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "login"))) 

driver.find_element_by_name("usr").send_keys(Username) 
driver.find_element_by_name("pas").send_keys(Password) 

driver.find_element_by_id("login").click() 

payload = "some text" 

driver.get(ForumPage) 
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "submitbtn"))) 


driver.switch_to_frame("tinymcewindow_ifr") 
driver.find_element_by_id("tinymce").clear() 
driver.find_element_by_id("tinymce").send_keys(payload) 
driver.switch_to_default_content() 

driver.find_element_by_id("submitbtn").click() 

driver.quit() 

Wenn ich versuche, und einen anderen Browser zu verwenden (wie Firefox) es funktioniert gut , aber mit Phantom wird nichts gepostet.

Was ich glaube könnte das Problem sein, ist, dass Phantom nicht füllt die Tinymce Textarea, wie ich es will. Gibt es eine Lösung für dieses Problem?

+0

Sie können die Seite laden? Nutzen Sie Debugger wie pdb. – BigSack

Antwort

3

Verwenden Sie die API tinymce js.

ersetzen

driver.switch_to_frame("tinymcewindow_ifr") 
driver.find_element_by_id("tinymce").clear() 
driver.find_element_by_id("tinymce").send_keys(payload) 
driver.switch_to_default_content() 

mit

driver.execute_script("tinyMCE.activeEditor.setContent('%s')" % payload) 
Verwandte Themen