簡體   English   中英

如何使用 Selenium 和 Java 在多幀之間切換

[英]How to switch between multiple frames using Selenium and Java

我想將密鑰發送到 iframe 中的卡號、到期日期和 CVV 文本字段。

現在我觀察到的是,在測試用例中,無論我先寫哪個幀來切換,都會發送密鑰,而忽略其他兩個。

在下面的代碼中,我首先提到了到期日期框架,它位於但沒有找到卡框架,即 cddnumber id 框架。

cpp.fillintextfields.get(4).sendKeys("test@test.com");
WebElement es = driver1.findElement(By.id("CollectJSInlineccexp"));
driver1.switchTo().frame(es);
cpp.expdate.sendKeys("01/21");
driver1.switchTo().frame("CollectJSInlineccnumber");
Thread.sleep(2000);
cpp.cdnumber.sendKeys("4111111111111111");
Thread.sleep(5000);

現在,當我在下面的代碼中首先提到 cddnumber 即卡號框架和之后的到期日期框架時,找到卡號框架而沒有找到到期日期框架。

cpp.fillintextfields.get(4).sendKeys("test@test.com");
driver1.switchTo().frame("CollectJSInlineccnumber");
Thread.sleep(2000);
cpp.cdnumber.sendKeys("4111111111111111");
Thread.sleep(5000);
WebElement es = driver1.findElement(By.id("CollectJSInlineccexp"));
driver1.switchTo().frame(es);
cpp.expdate.sendKeys("01/21");

以下是當我在卡號框架之前提到到期日期框架時,簡短給出的 TestNG 錯誤痕跡:

org.openqa.selenium.NoSuchFrameException: No frame element found by name or id CollectJSInlineccnumber
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'KE5', ip: '10.6.6.105', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '10.0.2'
Driver info: driver.version: unknown
    at org.openqa.selenium.remote.RemoteWebDriver$RemoteTargetLocator.frame(RemoteWebDriver.java:885)

請幫助我並建議我解決此問題的任何解決方案,以便即使我一個接一個地編寫它們,也可以找到所有框架。

當您需要在同一父框架的兩個框架(例如頂級框架)之間切換時,您需要切換到defaultContent上的第一個框架,或者當頁面包含 iframe 時的主文檔,然后切換到第二個子框架如下:

  • 第一個代碼塊:

     cpp.fillintextfields.get(4).sendKeys("test@test.com"); WebElement es = driver1.findElement(By.id("CollectJSInlineccexp")); driver1.switchTo().frame(es); cpp.expdate.sendKeys("01/21"); driver1.switchTo().defaultContent(); Thread.sleep(2000); driver1.switchTo().frame("CollectJSInlineccnumber"); Thread.sleep(2000); cpp.cdnumber.sendKeys("4111111111111111");
  • 第二個代碼塊:

     cpp.fillintextfields.get(4).sendKeys("test@test.com"); driver1.switchTo().frame("CollectJSInlineccnumber"); Thread.sleep(2000); cpp.cdnumber.sendKeys("4111111111111111"); Thread.sleep(5000); driver1.switchTo().defaultContent(); WebElement es = driver1.findElement(By.id("CollectJSInlineccexp")); driver1.switchTo().frame(es); cpp.expdate.sendKeys("01/21");

參考

您可以在以下位置找到一些相關的討論:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM