如何选择Outlook中的电子邮件来断言内容

时间:2014-04-09 22:31:27

标签: java python email selenium outlook

如何选择Outlook中的电子邮件以断言内容。

我目前的任务是测试live.com邮件网页。 Live.com WebPage

我遇到的问题是当我点击该电子邮件的订单项时收到错误:

  

访问财产的权限被拒绝' __ qosId'

我不能为我的生活弄清楚出了什么问题。代码如下。

    // Create a new instance of the Firefox driver
    WebDriver driver = new FirefoxDriver();

    // Create a new instance of the Selenium backed webdriver
    Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);

    // And now use this to visit Live.com
    driver.get("https://mail.live.com/");

    // Find the text input element by its name
    WebElement emailField = driver.findElement(By.id("i0116"));
    // Enter your email
    emailField.sendKeys(email);

    // Repeat process for Password field
    WebElement passField = driver.findElement(By.id("i0118"));
    passField.sendKeys(password);

    // Sign In button
    WebElement signInBtn = driver.findElement(By.name("SI"));
    signInBtn.click();

    // Click the compatibility link
    driver.findElement(By.linkText("continue to your inbox")).click();

    // Assert some things
    assertTrue(selenium.isTextPresent("Inbox"));

当我进入这一步时,我已经尝试了一些不同的选项,但似乎找不到合适的选项。我也在python中编写了相同的测试但是没有任何人使用相似的代码。

    // Opens the first email in the row
    driver.findElement(By.partialLinkText("foo foo")).click();

python的错误如下所示:

  

WebDriverException:消息:u"访问属性的权限被拒绝' __ qosId'" ; Stacktrace:

2 个答案:

答案 0 :(得分:1)

当试图找到这个问题的解决方案时,我遇到了同样的问题。我相信这是Selenium中的一个错误。

为了实现您的目标,我尝试使用JavaScriptExecutor并且工作正常。

WebDriver driver = new FirefoxDriver();
driver.get("https://mail.live.com/");

driver.findElement(By.name("login")).sendKeys("email@live.com");
driver.findElement(By.name("passwd")).sendKeys("password");
driver.findElement(By.name("SI")).click();      

Thread.sleep(2000); // change that as you wish. or use global wait.

((JavascriptExecutor) driver).executeScript("document.getElementsByClassName('t_estc')[0].click();");

我在这里使用JavaScript我得到了“t_estc”类标识的所有电子邮件,然后单击该数组的第一个元素。

这将点击收件箱中的第一封电子邮件。如果要解析所有列表,请执行一些逻辑。

答案 1 :(得分:0)

您可以将以下代码段用于您的目的:

代码段1:

driver.get("https://mail.live.com/");

driver.findElement(By.name("login")).sendKeys("email@live.com");
driver.findElement(By.name("passwd")).sendKeys("password");
driver.findElement(By.name("SI")).click();      

//insert code to wait for an element available on the landing page

List<WebElement> email = driver.findElements(By.xpath("//span[@class='Sb']"));
email.get(0).click();

代码段2:

driver.get("https://mail.live.com/");

driver.findElement(By.name("login")).sendKeys("email@live.com");
driver.findElement(By.name("passwd")).sendKeys("password");
driver.findElement(By.name("SI")).click();      

//insert code to wait for an element available on the landing page

WebElement email = driver.findElements(By.xpath("//span[@class='Sb'][1]"));
email.click();