【问题标题】:How Selenium webdriver locate element with a http response full of javascriptSelenium webdriver 如何使用充满 javascript 的 http 响应定位元素
【发布时间】:2016-03-04 20:01:51
【问题描述】:

我使用 selenium webdriver 来加速我的测试。在我的工作中,我们的网站将重定向到贝宝,以便用户完成付款。但是,我无法让 selenium webdriver 找到 paypal 上的电子邮件和密码输入字段。

示例贝宝网址:https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-07L974777B231831F#/checkout/login

我的代码演示可能是这样的:

    WebDriver m_driver = new FirefoxDriver();
    String redirected_url = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-0AT82163FM860854K#/checkout/login";

    m_driver.get(redirected_url);
    Thread.sleep(15*1000);
    WebElement we = m_driver.findElement(By.xpath(".//*[@id='email']"));
    we.sendKeys("login_email");
    we = m_driver.findElement(By.xpath(".//*[@id='password']"));
    we.sendKeys("login_password");
    we = m_driver.findElement(By.xpath(".//*[@id='btnLogin']"));
    we.click();

我的问题:

使用该代码和在贝宝网站上,我总是收到一条错误消息“没有这样的元素”发现异常。

我可以在 firefox 中找到带有 firepath 的元素,但我无法让 selenium webdriver 工作。

我知道这个错误可能是由PayPal登录页面的整个页面中的javascript引起的。我只是不知道如何处理这种情况。你能帮我解答吗?

【问题讨论】:

  • 整个页面的javascript是什么意思?

标签: selenium testing automation webdriver qa


【解决方案1】:

您无法找到这些元素的原因是 iframe。因此,在开始寻找元素之前使用 switchTo 方法和 switchTo iframe。 比如:

driver.switchTo().frame("injectedUl");
WebElement we = m_driver.findElement(By.xpath(".//*[@id='email']"));
...

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 2017-05-11
    • 2019-08-31
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多