Войти из всплывающего окна Получить данные из профиля - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь зайти на сайт investing.com, чтобы перейти к своему портфелю, чтобы получить актуальную информацию на странице. У меня проблема с входом в систему, потому что он не на главной странице, а всплывающая страница с именем "loginPopupform"

Вот мой код, который я пробовал.

String baseUrl = "https://www.investing.com"; 
String sChartLink = "https://www.investing.com/portfolio";
String strLogin = "username";
String strPassword = "password" ;
String ua = "\"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0\"";
Response res = null;
Document docRes = null;  
res = Jsoup
           .connect(baseUrl)
           .timeout(30000)
           .method(Connection.Method.POST)
           .data("loginFormUser_email", strLogin, "loginForm_password", strPassword)
           .userAgent(ua)
            .execute();        
docRes = res.parse();
Map<String, String> cookies = res.cookies();
doc1 = Jsoup.connect(sChartLink).userAgent(ua).cookies(cookies).get();
sDate = doc1.select("input[id=\"curDate\"]").text();

sDate пуст, и когда я заглядываю в doc1, в моем профиле нет никакой информации.

1 Ответ

0 голосов
/ 13 ноября 2018

Для этого вам нужно принудительно установить JS веб-сайта, поскольку всплывающее окно не является статическим контентом, поэтому Jsoup не получает его. Поэтому вам нужно использовать Selenium для принудительной JS и получения динамического содержимого.

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

WebDriver webDriver = new FirefoxDriver();
JavascriptExecutor js = (JavascriptExecutor)webDriver;

webDriver.get(URL);

WebDriverWait webDriverWait = new WebDriverWait(webDriver, 15); // wait 15 seconds

WebElement button = webDriver.findElement(By.id("id of the button that triggers the modal"));
js.executeScript("arguments[0].click();", button);

webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.name("loginPopupform")));

String fullHtml = webDriver.getPageSource();

Надеюсь, это помогло вам! Не стесняйтесь спрашивать меня о чем-нибудь еще!

...