无法将元素绑定定位到iframe

时间:2017-07-23 11:32:03

标签: c# iframe selenium-webdriver

我正在尝试自动登录以下网站: https://www.sbs.com.au/ondemand/

按下Signin / Signup后打开登录模式,这是一个iframe。

我正在尝试使用以下代码查找电子邮件,密码,登录按钮但无法正常工作。它的开放模式但在此之后什么都不做,只是测试失败但没有错误信息。

点击登录/注册链接并切换到iframe的代码:

 var link = Driver.Instance.FindElement(By.Id("capture_signin_link"));
        link.Click();
        Driver.Instance.Manage().Timeouts().ImplicitWait.Seconds.Equals(10);
        Driver.Instance.SwitchTo().Frame(1);

在电子邮件,密码和点击登录按钮中传递值的代码:

var inputus = Driver.Instance.FindElement(By.Name("email"));
        inputus.SendKeys(username);
        Driver.Instance.Manage().Timeouts().ImplicitWait.Seconds.Equals(5);
var inputpass = Driver.Instance.FindElement(By.Name("password"));
        inputpass.SendKeys(password);
        Driver.Instance.Manage().Timeouts().ImplicitWait.Seconds.Equals(5);

var loginbutton = Driver.Instance.FindElement(By.ClassName("traditional-login"));
loginbutton.Click();

我不确定我是否通过正确的值来查找定位器和ifame。请访问以上网站信息获取DOM信息。 期待一个很好的解决方案。请帮帮我

1 个答案:

答案 0 :(得分:0)

我点击注册以打开登录模式的最新代码:

var link = Driver.Instance.FindElement(By.Id("capture_signin_link"));
        link.Click();
        Driver.Instance.Manage().Timeouts().ImplicitWait=TimeSpan.FromSeconds(10.00);
Driver.Instance.SwitchTo().Frame(Driver.Instance.FindElement(By.Id("login-iframe")));
Driver.Instance.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10.00);

登录代码:

IWebElement inputus = Driver.Instance.FindElement(By.XPath(".//*[@id='onboarding']/div[2]/form/section[2]/div/div[1]/input"));
        inputus.SendKeys(username);

        Driver.Instance.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10.00);

        var inputpass = Driver.Instance.FindElement(By.Name("password"));
        inputpass.SendKeys(password);
        Driver.Instance.Manage().Timeouts().ImplicitWait=TimeSpan.FromSeconds(10.00);

        var loginbutton = Driver.Instance.FindElement(By.ClassName("traditional-login"));
        loginbutton.Click();

以上代码适用于Chrome。在firefox上,它在Sendkeys()方法上显示“Array out of index error”。我在一些博客上发现很多人都面临同样的问题并建议降级firefox浏览器版本以获得getco驱动程序的适当支持,因为getco驱动程序无法处理sendkeys()。 我没有尝试过上述建议。将尝试在这里更新。直到那时如果您对此有任何其他建议请告诉我。