1

サインインを選択した後、Selenium Webdriver がフレームを見つける方法を教えてください。

https://www.guaranteedrate.com/agent/visitors サインインをタップし、キーをユーザー名に送信します

@テスト

public void fail() throws InterruptedException {


        driver.findElement(By.linkText("Sign In")).click();
            driver.switchTo().window("GB_window");
            driver.switchTo().frame(0);                driver.findElement(By.id("username")).sendKeys("testgr100@gmail.com");
}
4

4 に答える 4

1

これを試して、うまくいくかどうか教えてもらえますか? あなたが経験しているのは Firefox だけの奇妙なことであり、JavaScriptExecutor がそれを回避するのではないかと思います。

public void setEmailAddrOnFieldInSubFrame() {
    driver.findElement( By.linkText("Sign In") ).click();
    driver.switchTo().window("GB_window");
    driver.switchTo().frame(0);
    WebElement element = driver.findElement( By.id("username") );
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript( "arguments[0].value='testgr100@gmail.com';", element );

    //cleanup frame position by switching back to previous window
    driver.switchTo().defaultContent(); // always do this cleanup just in case
}
于 2013-03-21T14:55:32.590 に答える
0

サインインをクリックすると、登録フォームのフレームが表示されると思います。

あなたがしようとしているのは、最初にウィンドウ(GB_Window)に切り替えることです。

ウィンドウ呼び出しへの切り替えを削除し、フレームに切り替えて操作を試してみてください

コードを編集した後、これを使用します

    driver.findElement(By.linkText("Sign In")).click();
    driver.switchTo().frame(0);
    driver.findElement(By.id("username")).sendKeys("testgr100@gmail.com");

}

于 2013-03-11T05:51:35.350 に答える
0

以下のコードを試してください。それは私のために働いた。Username Element が見つかるまでに 2 つのフレームがあります。最初のフレームは GB_frame で、2 番目のフレームには html ソースで名前が指定されていません。だから私はframe(0)2番目のものにインデックス()を使用しました。

@Test

public void fail() throws InterruptedException {    

        driver.findElement(By.linkText("Sign In")).click();
        //switch to frames inside the webpage
        driver.switchTo().frame("GB_frame"); //1st frame
           driver.switchTo().frame(0); //2nd frame              
              driver.findElement(By.id("username")).sendKeys("testgr100@gmail.com");
}
于 2013-03-11T06:33:30.637 に答える