当前位置: 代码迷 >> java >> 在生成的EPX付款表单中查找文本框时遇到问题
  详细解决方案

在生成的EPX付款表单中查找文本框时遇到问题

热度:80   发布时间:2023-07-17 20:57:56.0

初学者在这里问一个问题。

<input type="text" name="account_nbr" value="" maxlength="19"
       autocomplete="off" class="mainTextBox" id="account_nbr" >

这是一些简单的HTML,这让我头疼。 我认为的问题是,此文本框包含在我从下拉菜单中选择信用卡类型后在页面上生成的EPX CC付款表单中。 它不在新窗口中或其他任何内容中。 这只是页面内生成的一种形式。

我试着等待使用:

public static WebElement textbox_CardNumber(WebDriver driver) {
    WebDriverWait wait = new WebDriverWait(driver, 15); 
    element = wait.until(ExpectedConditions.elementToBeClickable(By.id("account_nbr")));
    return element; 
}

每次都超时。 我还尝试了其他几次使用不同的xpath的尝试,但是没有任何效果(投掷飞镖)。 我现在是硒和Java的新手,希望其他人遇到这样的问题。

通常,第三方提供的表单都位于iFrame中。 iFrame具有自己的DOM,与父页面的DOM分开。 由于Selenium直接在DOM上运行,因此不会在包含的iFrame中查找。

要查看内容,您必须使用Selenium切换到iframe的上下文。

一种实现方法是使用driver.switchTo()。 WebDriverWait还提供了一种不错的方法。

wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("id or name of the iframe element"));

您可以随时使用driver.switchTo()。defaultContent()切换回使用页面的主DOM。