使用Selenium WebDriver进行PrimeFaces fileUpload测试 [英] PrimeFaces fileUpload testing with Selenium WebDriver
问题描述
我已经成功测试了fileUploadSimple http://www.primefaces.org/showcase/ ui / fileUploadSimple.jsf
与webElement.sendKeys()方法。它不适用于自动上传
有什么方法可以测试PrimeFaces fileUploadAuto http://www.primefaces.org/showcase/ui/fileUploadAuto.jsf ?
我也喜欢你的发展。我将分享我的知识,但可能有更好的方法。
jsf代码在服务器端
< h:form id =lifeProposalEntryFormenctype =multipart / form-data>
< p:fileUpload fileUploadListener =#{AddNewLifeProposalActionBean.handleProposalAttachment}
mode =advancedmultiple =truesizeLimit =3000000update =customerEntryPanel attachmentDataList
allowTypes = /(\.|\/)(gif|jpe?g|png)$/id =proposalAttachment/>
< / h:表格>
客户端的html代码
< div id =lifeProposalEntryForm:proposalAttachmentclass =ui-fileupload ui-widget>
< div class =ui-fileupload-buttonbar ui-widget-header ui-corner-top>
< span class =ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left ui-fileupload-chooserole =button>
< span class =ui-button-icon-left ui-icon ui -c ui-icon-plusthick>< / span>
< span class =ui-button-text ui-c>选择< / span>
< input id =lifeProposalEntryForm:proposalAttachment_inputtype =filemultiple =multiplename =lifeProposalEntryForm:proposalAttachment_input>
< / span>
< span class =ui-button-icon-left ui-icon ui -c ui-icon-arrowreturnthick-1 -n>< / span>
< span class =ui-button-text ui -c>上传< / span>
< / button>
< button class =ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left ui-fileupload-canceltype =buttonrole =button >
< span class =ui-button-icon-left ui-icon ui -c ui-icon-cancel>< / span>
< span class =ui-button-text ui-c>取消< / span>
< / button>
< / div>
......
- 检索元素 或更多的文件)
- 检索
< div id =lifeProposalEntryForm:proposalAttachment的
第二个按钮
的元素 - 点击按钮元素。 in java
webElement = driver.findElement(By.id(lifeProposalEntryForm:proposalAttachment_input));
webElement.sendKeys(C:\\\\\\\\\\\ Life_1.jpg);
webElement = driver.findElement(By.xpath(// input [@ type ='file'and @ id ='lifeProposalEntryForm:proposalAttachment_input']));
webElement = driver.findElement(By.xpath(.//*[@ id ='lifeProposalEntryForm:proposalAttachment'] / div [1] / button [1]));
webElement.click();
请尝试我提到的。这是我的工作。
I've successfully tested fileUploadSimple http://www.primefaces.org/showcase/ui/fileUploadSimple.jsf with webElement.sendKeys() method. It doesn't work with Auto upload
Is there any way to test PrimeFaces fileUploadAuto http://www.primefaces.org/showcase/ui/fileUploadAuto.jsf with Selenium WebDriver?
解决方案I also have like your development. I am going to share my knowledge but there might a better way.
jsf-code at servier side
<h:form id="lifeProposalEntryForm" enctype="multipart/form-data"> <p:fileUpload fileUploadListener="#{AddNewLifeProposalActionBean.handleProposalAttachment}" mode="advanced" multiple="true" sizeLimit="3000000" update="customerEntryPanel attachmentDataList" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" id="proposalAttachment"/> </h:form>
html-code at client side
<div id="lifeProposalEntryForm:proposalAttachment" class="ui-fileupload ui-widget"> <div class="ui-fileupload-buttonbar ui-widget-header ui-corner-top"> <span class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left ui-fileupload-choose" role="button"> <span class="ui-button-icon-left ui-icon ui-c ui-icon-plusthick"></span> <span class="ui-button-text ui-c">Choose</span> <input id="lifeProposalEntryForm:proposalAttachment_input" type="file" multiple="multiple" name="lifeProposalEntryForm:proposalAttachment_input"> </span> <button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left ui-fileupload-upload" type="button" role="button"> <span class="ui-button-icon-left ui-icon ui-c ui-icon-arrowreturnthick-1-n"></span> <span class="ui-button-text ui-c">Upload</span> </button> <button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left ui-fileupload-cancel" type="button" role="button"> <span class="ui-button-icon-left ui-icon ui-c ui-icon-cancel"></span> <span class="ui-button-text ui-c">Cancel</span> </button> </div> ......
- Retrieve the element of
lifeProposalEntryForm:proposalAttachment_input
byid
. - Put/sendkey the file (one or more files)
- Retrieve the element of
second button
of<div id="lifeProposalEntryForm:proposalAttachment"
. - Click the button element.
Selinium Testing in java
webElement = driver.findElement(By.id("lifeProposalEntryForm:proposalAttachment_input")); webElement.sendKeys("C:\\temp\\life\\life_1.jpg"); webElement = driver.findElement(By.xpath("//input[@type='file'and @id='lifeProposalEntryForm:proposalAttachment_input']")); webElement= driver.findElement(By.xpath(".//*[@id='lifeProposalEntryForm:proposalAttachment']/div[1]/button[1]")); webElement.click();
Try as I mention. It is work for me.
这篇关于使用Selenium WebDriver进行PrimeFaces fileUpload测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
- Retrieve the element of