Hi all,
I have a webpage where I have an input type=“file” section to upload selected images from the computer. So, as you know, user clicks on the button and a dialog box opens to select the images from the computer and whenever user presses ok button on the dialog box the image is uploaded to a certain location.
I have a QWebView to load the page and I can simulate the button click already. However, I couldn’t figure out how I can fill the opened dialog box. I tried to use keyboard events but couldn’t get it working as well. Could anyone guide me a bit?
My target html line is the following:
<input id="fileupload" type="file" name="files[]" data-url="/server/images/e1b2d17b7b7eccef21a0a0ba1756d35c/upload/" multiple="">
My code to trigger the user click where element is the element.findFirst(“input[id=‘fileupload’]”);
QRect elGeom=element.geometry();
QPoint elPoint=elGeom.center();
int elX=elPoint.x();
int elY=elPoint.y();
int webWidth=ui->webView->width();
int webHeight=ui->webView->height();
int pixelsToScrolRight=0;
int pixelsToScrolDown=0;
if (elX>webWidth) pixelsToScrolRight=elX-webWidth+elGeom.width()/2+10; //the +10 part if for the page to scroll a bit further
if (elY>webHeight) pixelsToScrolDown=elY-webHeight+elGeom.height()/2+10; //the +10 part if for the page to scroll a bit further
ui->webView->page()->mainFrame()->setScrollBarValue(Qt::Horizontal,pixelsToScrolRight);
ui->webView->page()->mainFrame()->setScrollBarValue(Qt::Vertical,pixelsToScrolDown);
QPoint pointToClick(elX-pixelsToScrolRight,elY-pixelsToScrolDown);
QMouseEvent pressEvent(QMouseEvent::MouseButtonPress,pointToClick,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);
QCoreApplication::sendEvent(ui->webView, &pressEvent);
QMouseEvent releaseEvent(QMouseEvent::MouseButtonRelease,pointToClick,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);
QCoreApplication::sendEvent(ui->webView, &releaseEvent);
Thanks a lot.
↧