Невозможно найти переключатель в iFrame - PullRequest
0 голосов
/ 01 апреля 2019

Попытка найти радиокнопку внутри iFrame, но появляется сообщение об ошибке, поскольку такой элемент не найден.

Пробовал переключаться на iFrame, но все равно получал ту же ошибку.Не уверен, что мне не хватает.Перепробовал пару способов но не дошлоНе уверен, что мой Xpath неверен или неправильный способ использования идентификатора для определения элемента.[Проверено мое Xpath в инструментах разработчика, но все еще появляется та же ошибка, что и нет Элемент найден]

Заранее спасибо.

public class Sap_Demo {

    WebDriver driver;
    JavascriptExecutor jse;

    public static void main(String[] args) 
    {

        Sap_Demo demoObj = new Sap_Demo();

        demoObj.invokeBrowser();
        demoObj.initializeSAPFiory();
        demoObj.forecastMD61();

    }



    public void invokeBrowser()
    {
        System.setProperty("webdriver.chrome.driver", "U:\\Research Paper\\Selenium\\Drivers\\Chrome\\chromedriver_win32\\chromedriver.exe");
        driver = new ChromeDriver();

        driver.manage().deleteAllCookies();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
    }

    public void initializeSAPFiory()
    {

        try 
        {
            Thread.sleep(1200);
            driver.get("https://dijon.cob.csuchico.edu:8042/erp");
            driver.findElement(By.id("USERNAME_FIELD-inner")).sendKeys("H4");
            Thread.sleep(1200);

            driver.findElement(By.id("PASSWORD_FIELD-inner")).sendKeys("Onsjhjsa1087");
            Thread.sleep(1200);

            driver.findElement(By.id("CLIENT_FIELD-inner")).clear();
            Thread.sleep(1200);

            driver.findElement(By.id("CLIENT_FIELD-inner")).sendKeys("485");
            Thread.sleep(1200);

            driver.findElement(By.xpath("//span[@class='sapMBtnContent sapMLabelBold sapUiSraDisplayBeforeLogin']")).click();
        } 
        catch (InterruptedException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void forecastMD61()
    {

        try {
            driver.findElement(By.id("erpsim-tcode-btn-img")).click();
            Thread.sleep(1200);

            driver.findElement(By.id("TCode-input-inner")).sendKeys("MD61");
            Thread.sleep(1200);

            driver.findElement(By.id("TCode-launchBtn-content")).click();
            Thread.sleep(1200);

            driver.switchTo().defaultContent();
            WebElement iframe = driver.findElement(By.id("ITSFRAME1"));
            driver.switchTo().frame(iframe);

            /*driver.switchTo().frame(driver.findElement(By.xpath("//span[@id='M0:46:::4:2-imgSymb']")));
            driver.findElement(By.xpath("//span[@id='M0:46:::4:2-imgSymb']")).sendKeys("ABC");*/


            //driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
            //Thread.sleep(1600);


            /*driver.switchTo().frame("ITSFRAME1");
            WebDriverWait wait = new WebDriverWait(driver, 10);
            wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("ITSFRAME1"));*/

            /*WebElement E1 = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("M0:46:::4:2-imgStd")));
            WebElement E1 = driver.findElement(By.xpath("//span[@id='M0:46:::4:2-imgSymb']"));
            E1.click();*/

            //driver.findElement(By.id("M0:46:::4:2-imgStd")).click();
            //driver.findElement(By.xpath("//span[@id='M0:46:::4:2-imgStd']")).click();
            //Thread.sleep(1200);
        } 
        catch (InterruptedException e) 
        {
            e.printStackTrace();
        }

    }


}

1 Ответ

0 голосов
/ 01 апреля 2019

Ваш первый xpath для элемента и идентификатор для iframe верны, но когда окно открывается в новой вкладке, вам необходимо переключить драйвер на новую вкладку.
Таким образом, вместо использования driver.switchTo().defaultContent();
Вам необходимо использовать:

ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));

А если вы хотите перейти на исходную вкладку, вам нужно использовать:

driver.switchTo().window(tabs.get(0));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...