2017-11-15 3 views
1

휴대 전화 (Android)에서 링크를 열면 링크가 다른 URI로 리디렉션되는지 확인하고 싶습니다. 테스트 한 사이트가 휴대 전화에서 열면 "www.site.com"에서 "www.m.site.com"으로 링크가 변경된다는 것을 알고 있습니다. 휴대 전화에서 링크를 열면 링크가 다른 URI로 리디렉션되는지 확인하는 방법

나는이 코드를 시도했지만 작동하지 않습니다 :

HttpGet httpGet = new HttpGet(url); 
httpGet.addHeader("User-Agent", "Mozilla/5.0 (Linux; Android 7.0; SAMSUNG SM-G930F Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/6.2 Chrome/56.0.2924.87 Mobile Safari/537.36"); 

HttpClient httpClient = HttpClients.createDefault(); 
HttpClientContext context = HttpClientContext.create(); 
httpClient.execute(httpGet, context); 
List<URI> redirectURIs = context.getRedirectLocations(); 
if (redirectURIs != null && !redirectURIs.isEmpty()) { 
    for (URI redirectURI : redirectURIs) { 
     System.out.println("Redirect URI: " + redirectURI); 
    } 
    URI mobileURI = redirectURIs.get(redirectURIs.size() - 1); 
    return mobileURI.toString(); 
} 

난 항상 mobileURI null를받을 수 있습니다. 나는 어떤 도움을 주셔서 감사합니다.

+1

나는 아파치 HttpClient를-4.5 코드를 시도하고 내가 org.apache.httpcomponents HttpClient를 4.5.3을 사용하고 있습니다 ... – abel90

+0

근무 및 www.fishki.net을 테스트 해보십시오. 어떤 웹 사이트를 시도 했습니까? – Geha

+0

동일. 나는'http : // lenta.ru'가'https : // m.lenta.ru'로 리디렉션을 시도했다. – abel90

답변

1

로드 된 후 페이지가 리디렉션되는지 테스트하려면 대상 모바일 (모바일) 브라우저에서 에뮬레이션해야합니다. SeleniumHQ (org.seleniumhq.selenium : selenium-server : 3.4.0) 및 Chrome Driver으로이 작업을 수행 할 수 있습니다. 예를 들어 :

@Test 
public void testSeleniumChromeDriver() throws IOException { 
    // Create a new instance of the Chrome driver 
    System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver"); 
    Map<String, Object> deviceMetrics = new HashMap<>(); 
    deviceMetrics.put("width", 360); 
    deviceMetrics.put("height", 640); 
    deviceMetrics.put("pixelRatio", 3.0); 

    Map<String, Object> mobileEmulation = new HashMap<>(); 
    mobileEmulation.put("deviceMetrics", deviceMetrics); 
    mobileEmulation.put("userAgent", "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19"); 

    ChromeOptions chromeOptions = new ChromeOptions(); 
    chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation); 
    WebDriver driver = new ChromeDriver(chromeOptions); 

    // GET the page 
    driver.get("http://www.fishki.net"); 

    try { 
     assertThat(driver.getCurrentUrl(), is("http://m.fishki.net/")); 
    } finally { 
     //Close the browser 
     driver.quit(); 
    } 
} 
관련 문제