Search code examples
ajaxxpathseleniumgmailselenium-rc

Using selenium in order to read emails on gmail


I'm using selenium-rc and I'm trying to click on a specific email on gmail in order to get into the email page. More specifically: on the gmail inbox, click on a email with a specific subject.

I can't find the correct xpath (none of the tags in the email part are links). Ideas?


Solution

  • This XPath should do the trick:

    //div[@class = 'y6']/span[contains(., 'subject_here')]
    

    ... provided that you've first changed to the canvas_frame frame. Otherwise, it's unlikely it'll work at all. If you're not using Firebug to inspect the HTML, you really should as that's how I found out these values. Also, the Gmail structure changes fairly regularly, so that y6 class could change any day.

    I haven't tested this, but this might work for you:

    open http://gmail.com
    // do the login stuff, click on login
    waitForElementPresent canvas_frame
    selectFrame canvas_frame
    waitForElementPresent //div[@class = 'y6']/span[contains(., 'subject_here')]
    clickAt //div[@class = 'y6']/span[contains(., 'subject_here')] 0,0
    // do stuff you care about
    

    Important: you have to use clickAt to cause Gmail to realize you're clicking. It doesn't work with just the simple "click" command.

    By the way, we do this for our own internal monitoring of Gmail because it's been so unstable over the last few months. We're using my companies Selenium-based free monitoring service, which lets you run Selenium scripts to check performance and functionality of your site.