Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium webdriver 如何在selenium中切换到Iframe_Selenium Webdriver - Fatal编程技术网

Selenium webdriver 如何在selenium中切换到Iframe

Selenium webdriver 如何在selenium中切换到Iframe,selenium-webdriver,Selenium Webdriver,我发现很难输入iframe上显示的用户名和密码,当我们单击signin链接时会弹出iframe 谁能帮我一下吗 网站链接如下 链接: 关于,要使用iframe,您必须从当前页面切换到iframe。 试试下面的代码,让我知道你的结果 WebDriver driver = new FirefoxDriver(); driver.get("http://cashkaro.iamsavings.co.uk/"); String linkText = "SIGN IN"; WebElement ev

我发现很难输入iframe上显示的用户名和密码,当我们单击signin链接时会弹出iframe

谁能帮我一下吗

网站链接如下

链接:


关于,

要使用iframe,您必须从当前页面切换到iframe。 试试下面的代码,让我知道你的结果

WebDriver driver = new FirefoxDriver();

driver.get("http://cashkaro.iamsavings.co.uk/");

String linkText = "SIGN IN";

WebElement eventElement = (new WebDriverWait(driver, 10))
        .until(ExpectedConditions.presenceOfElementLocated(By.linkText(linkText)));        

eventElement.click();

WebElement frame = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath("html/body/div[14]/div[1]/div[2]/div[2]/div[1]/iframe")));
driver.switchTo().frame(frame);

driver.findElement(By.id("uname")).sendKeys("username@domain.com");
driver.findElement(By.id("uname")).sendKeys(Keys.TAB); 
driver.findElement(By.id("pwd")).sendKeys("enteryourpassword"); 
driver.findElement(By.id("sign_in")).click();

使用有效的登录凭据登录。

Selenium中存在一个预定义的方法,您可以使用该方法切换到
框架或
IFrame

WebDriver driver = new FirefoxDriver();
有3种重载方法可用于切换到帧

1. driver.switchTo().frame(String frameId);
2. driver.switchTo().frame(int frameNumber);
3. driver.switchTo().frame(WebElement frame);
您可以使用上述3种方法中的任意一种来切换帧


希望有帮助

要切换到iframe,可以使用:

 public void switchToFrame(WebElement element) {
        getDriver().switchTo().frame(element);
    }

请在下面找到答案
公共无效登录\u通常(){
导航到url(prop.getProperty(“url\u prod\u Locale”);
//父窗口
字符串parent_window=driver.getWindowHandle();
System.out.println(“父窗口窗口:+父窗口”);
findElement(By.xpath(prop.getProperty(“singin_link”)))。单击();
WebDriverWait wait=新的WebDriverWait(驱动程序,7);
字符串iframe_xpath=prop.getProperty(“iframe_com_xpath”);
wait.until(预期条件.frameToBeavailable)和switchToIt(By
.xpath(iframe_xpath));
findElement(By.xpath(prop.getProperty(“email\u id\u InSignIn”))
.sendKeys(prop.getProperty(“用户\电子邮件\ id \签名”);
driver.findElement(由.cssSelector(prop.getProperty(“password\u InSign”))
.sendKeys(道具getProperty(“pwd_signIn”);
布尔复选框标志=driver.findElement(
By.xpath(prop.getProperty(“保持我的签名”)).isSelected();
System.out.println(“复选框标志”+复选框标志);
如果(复选框\u标志==false){
findElement(By.xpath(prop.getProperty(“Keep\u me\u signed\u in”))
。单击();
}
driver.findElement(By.xpath(prop.getProperty(“sign\u button\u sign”))
。单击();
//=================================================================================
/*字符串login\u mesg\u error=driver.findElement(
通过.cssSelector(prop.getProperty(“loginerror”)).getText();
System.out.println(“登录错误:“+login\u mesg\u错误”);
如果(登录错误。长度()0)
{
System.out.println(“成功登录”);
Assert.assertTrue(true,“成功登录”);
应用程序_LOG.debug(“成功登录”);
}否则{
登录错误=driver.findElement(
By.xpath(prop.getProperty(“login_error_mesg”)).getText();
System.out.println(“登录错误:“+login\u mesg\u错误”);
System.out.println(“登录失败”);
Assert.assertTrue(false,“登录失败-用户名或密码不正确”);
应用程序调试(登录错误+“登录失败”);
}
driver.switchTo().defaultContent();
}
wati.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By locator)

wati.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(WebElement element)
Please find the answer below 

public void login_normally() {
        
        navigate_to_url(prop.getProperty("url_prod_Locale"));
        // Parent window
        String parent_window = driver.getWindowHandle();
        System.out.println("Parent windiow :" + parent_window);

        driver.findElement(By.xpath(prop.getProperty("singin_link"))).click();

        WebDriverWait wait = new WebDriverWait(driver, 7);
          String iframe_xpath = prop.getProperty("iframe_com_xpath");
        wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By
                .xpath(iframe_xpath)));

        driver.findElement(By.xpath(prop.getProperty("email_id_InSignIn")))
                .sendKeys(prop.getProperty("user_email_id_signIn"));
        driver.findElement(By.cssSelector(prop.getProperty("password_InSign")))
                .sendKeys(prop.getProperty("pwd_signIn"));

        boolean check_box_flag = driver.findElement(
                By.xpath(prop.getProperty("Keep_me_signed_in"))).isSelected();
        System.out.println("check_box_flag" + check_box_flag);

        if (check_box_flag == false) {
            driver.findElement(By.xpath(prop.getProperty("Keep_me_signed_in")))
                    .click();
        }

        driver.findElement(By.xpath(prop.getProperty("sign_button_signIn")))
                .click();
 //=================================================================================
/*      String login_mesg_error = driver.findElement(
                By.cssSelector(prop.getProperty("loginerror"))).getText();
        System.out.println(" login Error : " + login_mesg_error);
        
            
        if (login_mesg_error.length()<0 ) {
            System.out.println("Sucessfully Loggedin");
            Assert.assertTrue(true, "Sucessfull Login");
            APPLICATION_LOG.debug(login_mesg_error);
        } else {
            System.out.println("Login Failed");
            Assert.assertTrue(false, login_mesg_error);
            APPLICATION_LOG.debug(login_mesg_error);
        }*/
        
//==============================================================================
        String login_mesg_error=" ";
        List<WebElement> li=driver.findElements(By.cssSelector(prop.getProperty("logout_button_css")));
        System.out.println(" list size :" +li.size());
                
        if(li.size()>0)
        {
            System.out.println("Sucessfully Loggedin");
            Assert.assertTrue(true, "Sucessfull Login");
            APPLICATION_LOG.debug("Sucessfull Login");
        } else {
            login_mesg_error = driver.findElement(
                    By.xpath(prop.getProperty("login_error_mesg"))).getText();
            System.out.println(" login Error : " + login_mesg_error);
            System.out.println("Login Failed");
            Assert.assertTrue(false, "Login failed - Incorrect username or password");
            APPLICATION_LOG.debug(login_mesg_error + "Login failed");
        }
        driver.switchTo().defaultContent();
        
        
    }