2014-10-27 16 views
6

Sto cercando di inviare un'immagine e un testo sulla pagina di Facebook utilizzando il controllo del browser.non può pubblicare un'immagine in post FB, questo aggiornamento di stato sembra essere vuoto. Si prega di scrivere qualcosa o allegare un collegamento o una foto per aggiornare il proprio stato

I Incollare un url nell'area di testo, quando ottiene l'anteprima invio i tasti (ctrl + A). E poi inviare il testo via send keys.Send(...) Tutto funziona bene fino a quando scatto del tasto posto dà errore

"This status update appears to be blank. Please write something or attach a link or photo to update your status." 

Ho cercato di impostare tutti gli attributi di Textarea, come titolo, testo interno, e segnaposto, e sono sicuro Anche l'area di testo non è nulla.

HtmlElement elementTextArea = null; 
HtmlElementCollection elemss = webBrowser1.Document.GetElementsByTagName("textarea"); 
foreach (HtmlElement elem in elemss) 
{ 
    if (elem.GetAttribute("name") == "xhpc_message") 
    { 
     elementTextArea = elem; 
     break; 
    } 
} 
elementTextArea.Focus(); 
Print("\nSet Focused\n"); 

SendText(url); 

webBrowser1.Update(); 
DoWait(4); 

SendText("^(a)"); 
SendText(text); 
webBrowser1.Update(); 

elementTextArea = webBrowser1.Document.GetElementById(id); 

elementTextArea.InnerText += "\nINNER TEXT"; 
Print("\nAdded Inner Text ABCD\n"); 

//elementTextArea.SetAttribute("placeholder", text + "PLACEHOLDER"); 
//Print("\nAdded place holder text abcd \n"); 

/*    
HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("input"); 
foreach (HtmlElement elem in elems) 
{ 
    if (elem.GetAttribute("className").Equals("mentionsHidden")) 
    { 
     Print("\nAdded Second Text\n"); 
     elem.SetAttribute("value", text+""); 
     break; 
    } 
} 
*/ 

DoWait(3); 

HtmlElementCollection elements = webBrowser1.Document.GetElementsByTagName("button"); 
foreach (HtmlElement element in elements) 
{ 
    if (element.GetAttribute("className") == "_42ft _4jy0 _11b _4jy3 _4jy1 selected _51sy") 
    { 
     Print("\nPost Button Found\n"); 
     element.Focus(); 

     Print("\nFocus1\n"); 

     DoWait(2); 

     SendText("~"); 

     element.InvokeMember("click"); 

     Print("\nClicked1\n"); 

Gentilmente aiutatemi, ci è voluto tanto tempo.

+0

Hai provato a simulare keyboardinput? Sto indovinando, ma potrebbe essere FB sta controllando il tuo input (per url ecc.) E il controllo fallisce se lo aggiungi semplicemente "normalmente" –

risposta

1

Quando viene presentato un post, include tra le altre variabili, questi:

clp:{"cl_impid":"eeeeeeee","clearcounter":0,"elementid":"v_1_2n","version":"x","parent_fbid":1000000000000} 
xhpc_message_text: 
xhpc_message: 

Se si guarda il codice sorgente della pagina, il campo _text sopra è un campo nascosto sotto la textarea che sembra riflettere lo stesso valore. E, quando si fa inizialmente clic sulla textarea, viene modificato anche clp come campo nascosto.

Dovrai replicare esattamente ogni campo inviato, clonare la sessione, e poi sperare che non cambino roba rinominando un campo o, peggio, aggiungendo un altro il cui nome è basato su un ID univoco e posizionato casualmente nel codice.

Quindi, in breve, ecco, ma potresti prendere in considerazione l'utilizzo della loro API anche con le stupide regole "I'm your daddy", che ora dispongono di autorizzazioni ... potrebbe farti risparmiare un po ' mal di testa seri!