Selenium gmail .. Type text in body - automation

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>

Related

Having trouble clicking on a button/link with Selenium Webdriver

I'm having real trouble clicking on this "button" link in this web app. It's defined as so:
<tr>
<td id="mainleftlinkzoneover" width="9" valign="top">
<td id="mainleftlinkzoneover" class="mainleftlinks" width="151" title="Online Training"> Online Training</td>
</tr>
Notice how there is no name or ID to use. Thanks! I've tried clicking it by Link Text. Nope. I've tried clicking it by partial link text. Nope.
Not sure why that isn't working but I've only been doing Selenium for a whole day. I'm successfully logging into the application so things are working. If I use By.PartialLinkText it doesn't fail but it doesn't click the link either.
WebElement OnlineTrainBtn = driver.findElement(By.partialLinkText("Training"));
OnlineTrainBtn.click();
I think I may be left with either Xpath or CssSelector but I have no idea how to write the search string.
Any help on this is greatly appreciated, I have ten or twelve more "buttons" like this to deal with.
The By.PartialLinkText searches among the <a> tags.
So in your case, I would use an CSS selector to match the title:
driver.findElement(By.cssSelector("td[title='Online Training']")).click();
You could also use an XPath to partially match the text:
driver.findElement(By.xpath("//td[contains(., 'Training')]")).click();

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 not capturing the popup/ Alerts

I am using selenium IDE to record the commands. I need to test the red rout for login screen. But Selenium is not recognizing the alert coming from the application. Highlighted in bold alert message is not captured by the selenium IDE.
selenium.open("http://192.168.132.244:8080/SampleApp/");
assertEquals("SampleApp", selenium.getTitle());
selenium.type("name=userame", "NoUser"); --USER NAME
selenium.type("name=password", "Password1"); --Password
selenium.click("css=input[type=\"image\"]"); --Login button
selenium.waitForPageToLoad("30000");
Please enter correct Username and Password. -- Alert message
assertEquals("SampleApp", selenium.getTitle());
Please help me out completing this selenium...
Try out this 1
assertEquals("Please enter correct Username and Password.", selenium.getAlert());
Let me know whether working or not.
I've also had success with waitForAlert versus an assert or verify, but as with all your mileage may vary.
USe this command hope this will help you
<tr>
<td>storeAlert</td>
<td>a</td>
<td></td>
</tr>
<tr>
<td>echo</td>
<td>${a}</td>
<td></td>
</tr>

Automating Gmail with 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.