Невозможно найти элемент nCino через Selenium в Salesforce - PullRequest
0 голосов
/ 13 февраля 2019

Я использую приложение nCino (построено на Salesforce) для своего проекта.nCino - это фреймворк, созданный на основе приложения Salesforce и называемый.

Я пытаюсь автоматизировать функциональные потоки в пользовательском интерфейсе nCino через Selenium Java в браузере Chrome (пробовал также в Firefox)

Проблема 1: Переключитесь на iframe и щелкните элемент См. Код iframe ниже

iframe Source code

Ошибка консоли:

CORS policy error in console

Фрагмент кода Selenium, чтобы переключиться на iframe и щелкнуть элемент внутри элемента:

package nCInoAutomation;

import java.util.List;
import java.util.concurrent.TimeUnit;

import org.apache.http.Header;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.html5.ApplicationCache;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class Main {

	public static void main(String args[]) throws InterruptedException {
		  //System.setProperty("webdriver.gecko.driver", Parameters.FIREDRIVER);
		  System.setProperty("webdriver.chrome.driver", Parameters.CHROMEDRIVER);
		  ChromeOptions chromeOptions = new ChromeOptions();
		  chromeOptions.addArguments("--start-maximized"); 
		//  chromeOptions.addArguments("--disable-web-security"); 
		  WebDriver driver = new  ChromeDriver(chromeOptions);
		 driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
		//WebDriver driver = new FirefoxDriver();
		  
		  driver.get(Parameters.APPURL);
		  Thread.sleep(2000);
		  WebElement formElement = driver.findElement(By.id("login_form"));
		  formElement.findElement(By.id(Parameters.UNAME_XPATH)).sendKeys(Parameters.UNAME);
		  formElement.findElement(By.id(Parameters.PWD_XPATH)).sendKeys(Parameters.PWD);
		  formElement.findElement(By.id(Parameters.ENTER_XPATH)).sendKeys(Keys.ENTER);
		  Thread.sleep(20000);
		  System.out.println("Wait Over");
		  WebDriverWait wait=new WebDriverWait(driver, 20); 
		  
		  wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(2));
		  
		  List<WebElement> list = driver.findElements(By.tagName("iframe"));
		  System.out.println(list.size());
		  JavascriptExecutor js = (JavascriptExecutor) driver;
		  WebElement ele = list.get(2);
		  
		  js.executeScript("arguments[0].setAttribute('style', 'background: yellow; border: 2px solid red;');", ele);  
		  JavascriptExecutor jse = (JavascriptExecutor)driver;
		  jse.executeScript("window.scrollBy(0,500)", "");

		  System.out.println("********Switched to the iframe*******");
		 
		  wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='ncSecondaryNavigation']//span[text()='Loan'])[2]")));
		  System.out.println("Clicked");
	
		  
	}
}

It says that it has switched to iframe but doesnt look like so.

Проблема 2: Невозможно найти элемент
Кроме того, iframe содержит большинство угловых элементов js, следовательно, Невозможно идентифицировать элементы.Смотрите скриншот ниже:

Source code of the page

Приложение выглядит примерно так:

Application Screenshot

Можете ли вы помочь мне автоматизировать ниже: 1.Переключитесь на iframe, попав на экран Salesforcw.2. Перейдите на экран «Залог», нажав на ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...