Automating Gmail with Selenium - selenium

i want to use selenium to click on a specific button !
the send button on gmail, the standard version and not the basic html version
i tried
<tr>
<td>selectFrame</td>
<td>c16nfgbb415qzj</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//div[#id=':v9']/b</td>
<td></td>
</tr>
didnot work
give me python code please and not html
Thanks

You can't record a script in Selenium and play it back using standard Google Mail. Most of the HTML names/IDs/classes in standard Google Mail are unpredictable.
You'd have to use xpath-based targets with indices e.g. //div[2]/div/div[3]. This has a high-dependency on the structure of the HTML being served by Google Mail. As soon as it changes, you'll need to modify your script.
The basic HTML version is predictable enough to just record and replay a script. You didn't say why you don't want to use that.

Related

Can visualforce's RenderAs PDF include href links?

We're using SalesForce's renderAs="PDF" option, and we want a clickable link in the body of the generated PDF. Is this possible?
I have tried an ... and I've tried <apex:outputlink value="...">...</apex:outputlink>, both result in a non clickable rendered version.
Has anyone found a way that works in salesforce's engine?
<apex:page standardController="Opportunity" showHeader="false" renderas="pdf">
<apex:outputLink value="https://google.com">https://google.com</apex:outputLink>
<table border="0" cellspacing="0" cellpadding="0" width="100%" id="table1">
<tr>
<td>
...
Update:
This is browser dependent. Firefox doesn't let you click the link, Google Chrome does.
What type of link are you trying to render in the PDF, a relative link? Using outputlink I have previously had the same behaviour but only for relative links.
Using a full URL should render the hyperlink.

Selenium gmail .. Type text in body

I am new to selenium and would like to send an email using gmail... I am aware if the automation policy of Google and will be using this mainly for testing and sending email to small number of friends , so please don't answer with ' it violates policy so don't do it ..' Etc
I tried the solution given here but its not working. The body of email is written as HTML div in body of email rather than textarea.
Can someone give me xpath , command , and value fields.
I would also like to know why the example given is not working as I am unable to understand it.
I am using https://mail.Google.com/mail/u/0/?view=cm to directly compose mail rather than the compose dialogue of email.
After login please use Thread.sleep(10000) and then fine element as per below :
//DO LOGIN
Thread.sleep(10000);
driver.get("https://mail.google.com/mail/u/0/?view=cm&fs=1&tf=1");
Thread.sleep(10000);
//XPATH FOR BODY
driver.findElement(By.xpath("//*[#id=':nz']")).sendKeys("TEST DATA IN BODY");
I have tested and above code is working. Actually after login it takes some time to load so elements are not always visible immediately so I have used thred.sleep();
This worked for me. I don't love it.
<tr>
<td>type</td>
<td>id=:om</td>
<td>some#email.com</td>
</tr>
<tr>
<td>type</td>
<td>id=:p1</td>
<td>subject text</td>
</tr>
<tr>
<td>type</td>
<td>//input[#name='body']</td>
<td>fdhh</td>
</tr>

How to handle Pageload and display result in source tab using Selenium

Hi I need to implement a script that should capture all the object properties in a screen,
and prepare an xml for this i used javascript and jQuery.
Coming to my problem is if I click any submit button / link the page is moved to another
page i lost the previous page information, i am thinking to solve this using Selenium IDE
can any one please help me on this and i want to get the result in value field in the source
tab.
REQUIRED FORMAT in Source Tab
<tr>
<td>Testcase Name/ script Name</td>
<td>Method Name</td>
<td> XML as String </td>
</tr>
How can I insert my customize row in selenium IDE through javascript.
Thanks in advance.
What you can do with IDE is limited and it's not possible to do what you want using javascript.
I don't see IDE loosing its information when you move to other pages.

Shifting focus to a new popup window that has a null ID and name

I apologize if this question is redundant - I've seen a number of similar posts on this and other sites but none of them presented a solution that helped me.
I am using Selenium IDE to record a script that clicks a link (which opens a new window with a .shtml extension). I then need to switch focus to the new window and hit the save button to download a PDF.
I don't understand exactly how this works, but the url of the popup window is some generic url (https://www.theice.com/marketdata/reports/datawarehouse/ConsolidatedEndOfDayReportPDF.shtml) that hosts whatever report you generate on the previous page (https://www.theice.com/marketdata/reports/ReportCenter.shtml#report/142). If you try an openWindow command on the new URL it won't generate the report, you must open it through a link on the first page.
I want to refocus selenium to the new popup through selectWindow or selectPopup, but the issue is that the popup has no name, ID or title. Does anyone have a suggestion on how to avoid this issue?
Thanks,
Have not tried this out myself, but you could use this to find the window names and switch to it.
<tr>
<td>storeAllWindowNames</td>
<td>names</td>
<td></td>
</tr>
<tr>
<td>echo</td>
<td>${names}</td>
<td></td>
</tr>.
<tr>
<td>selectWindow</td>
<td><the name you find out></td>
<td></td>
</tr>.
You can try with storeAllWindowIds,storeAllWindowTitles. These three methods should return an array of windowids, something like this , bJHBGug2u8

Selenium IDE - There was an unexpected Confirmation!

I have a button that displays Javascript confirmation popup. This is a part of my test case:
<tr>
<td>clickAndWait</td>
<td>buttonId</td>
<td></td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>Object has been deleted</td>
<td></td>
</tr>
It works as expected: OK is clicked automatically on a popup and verifyTextPresent return true. Still, I get [error] There was an unexpected Confirmation! in the log and test case fails.
Any suggestions?
Summary: In the IDE use storeConfirmation.
You have to consume confirmation dialogs. Otherwise the Selenium test will fail.
From the Java Selenium RC API Selenium.html.getConfirmation method:
If a confirmation is generated but
you do not consume it with
getConfirmation method, the next Selenium
action will fail.
Edit:
storeConfirmation consumes the confirmation as well.
storeConfirmation ( variableName )
Retrieves the message of a JavaScript confirmation dialog
generated during the previous action.
If a confirmation is generated but you do not consume it with
getConfirmation method, the next Selenium
action will fail.
I encountered the same problem, and I solved it like this:
chooseOkOnNextConfirmation
click buttonId
assertConfirmation
This makes my test run green in my Selenium IDE.
The code to do this is:
<tr>
<td>chooseOkOnNextConfirmation</td>
<td></td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>ctl00_CPHMain_ucFormDMS_grdDocumentList_ctl00_ctl04_btnDelete</td>
<td></td>
</tr>
<tr>
<td>assertConfirmation</td>
<td>Areyousureyouwanttodeletethisdocument?</td>
<td></td>
</tr>
using selenium.chooseOkOnNextConfirmation is correct but insead of using this alone use
selenium.click("xpath=//button");
selenium.getConfirmation();
selenium.chooseOkOnNextConfirmation();
Here it will first click on the button and get the confirmation , then it would click OK from that confirmation
In Selenium IDE you can use waitForConfirmation(pattern)