如何在Outlook中选择邮件以断言内容
我该如何在Outlook中选择一封邮件以验证其内容。
我现在的任务是测试live.com的邮件网页。Live.com网页
我遇到的问题是,当我点击收到的邮件时,出现了一个错误:
权限被拒绝,无法访问属性'__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'" ; 堆栈跟踪:
2 个回答
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();
1
在寻找这个问题的解决办法时,我遇到了同样的问题。我觉得这是Selenium里的一个bug。
为了实现你想做的事情,我尝试了使用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”标识的邮箱,然后点击那个数组里的第一个元素。
这样就会点击你收件箱里的第一个邮箱。如果你想处理整个列表,就需要加一些逻辑。