我已经好好看看了,但是我找不到具体的答案;希望有人能指出我正确的方向。
我正在使用C#针对Firefox驱动程序在Visual Studio 2015中使用WebDriver 2.53自动执行PayPal结帐流程。我流入PayPal很好,能够通过沙箱环境登录。但是,当我在初次登录后进入确认屏幕时,我似乎无法选择继续按钮。
我的代码是:
driver.SwitchTo().Frame(driver.FindElement(By.TagName("iframe")));
var emailAddressLogin = driver.FindElement(By.Id("email"));
emailAddressLogin.SendKeys("EMailAddress");
var password = driver.FindElement(By.Id("password"));
password.SendKeys("Password");
var login = driver.FindElement(By.Id("btnLogin"));
login.Click();
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
var ContinueButton = driver.FindElement(By.XPath("//*[@id=\"confirmButtonTop\"]"));
ContinueButton.Click();
一旦进入confirmButtonTop
选择,我总是回来:
WebDriver.dll中出现“OpenQA.Selenium.NoSuchElementException”类型的异常,但未在用户代码中处理。附加信息:无法找到元素:{“method”:“id”,“selector”:“confirmButtonTop”}
我试图通过XPath,ID等找到按钮,但似乎没有任何东西允许选择,并始终返回“无法找到元素”。
有没有人在PayPal沙盒环境中遇到“继续”按钮的问题,或者建议我缺少什么?我试图切换焦点,但这似乎不起作用。
答案 0 :(得分:0)
好的,所以我做了一些搜索,我发现在按钮选择工作之前将以下内容添加到我的代码中:
driver.SwitchTo()窗口(driver.WindowHandles.Last());
所以结束代码看起来像:
driver.SwitchTo().Frame(driver.FindElement(By.TagName("iframe")));
var emailAddressLogin = driver.FindElement(By.Id("email"));
emailAddressLogin.SendKeys("EMailAddress");
var password = driver.FindElement(By.Id("password"));
password.SendKeys("Password");
var login = driver.FindElement(By.Id("btnLogin"));
login.Click();
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
driver.SwitchTo().Window(driver.WindowHandles.Last());
var ContinueButton = driver.FindElement(By.XPath("//*[@id=\"confirmButtonTop\"]"));
ContinueButton.Click();
这取自Selenium webdriver selecting new window c#,感谢joinsaad