Selenium webdriver 如何定位带有充满 JavaScript 的 http 响应的元素?
How Selenium webdriver locate element with a http response full of JavaScript?
我使用 selenium webdriver 来加速我的测试。在我的工作中,我们的网站将重定向到贝宝,供用户完成付款。但是,我无法让 selenium webdriver 找到 paypal 上的电子邮件和密码输入字段。
我的代码演示可能是这样的:
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();
我的问题:
使用该代码和在 paypal 网站上,我总是收到 'no such element' 发现异常的错误消息。
我可以在 Firefox 中找到带有 firepath 的元素,但我无法使 selenium webdriver 工作。
我知道这个错误可能是paypal登录页面整页的JavaScript引起的。我只是不知道如何处理这种情况。
您找不到这些元素的原因是 iframe
。因此,在开始寻找元素之前使用 switchTo 方法和 switchTo iframe。
类似于:
driver.switchTo().frame("injectedUl");
WebElement we = m_driver.findElement(By.xpath(".//*[@id='email']"));
...
我使用 selenium webdriver 来加速我的测试。在我的工作中,我们的网站将重定向到贝宝,供用户完成付款。但是,我无法让 selenium webdriver 找到 paypal 上的电子邮件和密码输入字段。
我的代码演示可能是这样的:
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();
我的问题:
使用该代码和在 paypal 网站上,我总是收到 'no such element' 发现异常的错误消息。
我可以在 Firefox 中找到带有 firepath 的元素,但我无法使 selenium webdriver 工作。
我知道这个错误可能是paypal登录页面整页的JavaScript引起的。我只是不知道如何处理这种情况。
您找不到这些元素的原因是 iframe
。因此,在开始寻找元素之前使用 switchTo 方法和 switchTo iframe。
类似于:
driver.switchTo().frame("injectedUl");
WebElement we = m_driver.findElement(By.xpath(".//*[@id='email']"));
...