如何选择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:
答案 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();