18

Google 크롬 38은 devtools에 새로운 "Device Mode & Mobile Emulation" 기능을 추가했습니다. 에뮬레이션 장치를 선택하는 이외에, 그것은 emulate different network conditions하는 것도 가능합니다 :크롬 및 셀렌으로 네트워크 조절

는 다양한 네트워크 조건에서 사이트의 성능을 최적화하는 것은 모바일 관객 개발의 핵심 요소 입니다.

기기 모드의 네트워크 조절 기능을 사용하면 Edge, 3G, 심지어 오프라인을 포함하여 다양한 네트워크 연결을 통해 사이트를 테스트 할 수 있습니다. 사전 설정 드롭 다운에서 연결을 선택하여 네트워크 적용 조절 및 대기 시간 조정. GPRS 50 Kbps의 -

예를 들어, 우리는 좋은 옛날처럼 설정할 수 있습니다 :

enter image description here

이제 우리는 그것을위한 좋은 유스 케이스를 - 우리가 내부 응용 프로그램이 네트워크 속도 테스트. 이 새로운 에뮬레이션 기능은 수동 테스트에 매우 유용합니다. 그러나 우리는 그것을 자동화하고 싶습니다.

질문은 다음과 같습니다

가 특정 네트워크 조건에 셀레늄을 통해 크롬을 시작할 수 있습니까? 크롬 기본 설정이나 명령 줄 인수를 통해 제어 할 수있는 것입니까?


확실히 simulate slow internet connection 여러 옵션이 있습니다,하지만 문제는 크롬 + 셀레늄에 대해 구체적이다.

답변

7

ChromeDriver에 네트워크 에뮬레이션 were added을 제어하는 ​​API입니다. 그리고 꽤 오랫동안 사용할 수 있어야합니다. 연결된 문제의 comment에 따르면 버그 수정 때문에 적어도 2.26 버전을 사용해야합니다. 쓰기 바인딩의 순간에 셀레늄 changelog에 따르면

2 개 언어로 사용할 수 있습니다

  • 자바 스크립트 버전 3.4.0 버전 3.5.0 (commit)의 등 (commit)
  • 파이썬을
  • 의로

다른 언어로 이러한 바인딩이 필요한 경우 위에 설명한 것과 비슷한 구현/문제 구현을 열어야합니다. 파이썬에서

사용 예제는 다음과 같습니다 : 그것은 셀레늄 (C#을)에 곧 것처럼

driver.set_network_conditions(
    offline=False, 
    latency=5, # additional latency (ms) 
    download_throughput=500 * 1024, # maximal throughput 
    upload_throughput=500 * 1024) # maximal throughput 
+0

download_throughput 및 upload_throughput은 초당 바이트 수로 표시됩니까? 그래서 예제는 대략 5MB/s입니까? – Cynic

+0

@Cynic Chrome Dev Tools에서 'kb/s'라고 말합니다. 내 가정은 API를 사용할 때와 동일하다는 것입니다. 그러나 나는 나 자신을 시험하지 않았다. 알아낼 때 답을 편집하십시오. –

+0

이상 하네. dev 툴을 사용하여 5 * 1024와 같이 테스트하고 http://speedtest.xfinity.com (시작 버튼을 찾기 쉬운)에서 테스트하면 5 mbps가됩니다. 그러나 Selenium 스크립트에서 5 * 1024를 사용하면 기본적으로 등록되지 않습니다. 약 5 mbps를 얻으려면 5 * 30000 주위에 무언가를 할 필요가 있습니다. 약 5 mbps (300 mbps + 인터넷에서 스크립트를 조절하지 않으면)입니다. 어쩌면 그 버그는 내가 생각할 수있는 전환에 잘 부합하지 않는다. – Cynic

14

아니요, Chrome 환경 설정 또는 명령 줄 인수를 통해 Network Connectivity Emulation을 제어 할 수 없습니다. 네트워크 연결 에뮬레이션은 Chrome 내장 디버거의 일부입니다. 이 문제를 해결하는 한 가지 방법은 디버거를 제어하는 ​​것입니다. 이것은 확장을 통해 또는 디버거를 직접 제어하여 수행 할 수 있습니다 (explanation 참조). 그러나 WebDriver에서는 작동하지 않습니다. 그 이유는 하나의 "디버그"세션 만있을 수 있으며 WebDriver가 이미이를 사용하고 있기 때문입니다 (explanation 참조). 공용 인터페이스가 없으므로 WebDriver를 통해 제어 할 수있는 방법도 없습니다.

또한 빌드 인 디버거의 일부인 Device Mode & Mobile Emulation의 경우 공개 인터페이스 (details)가 있으며 따라서 제어 할 수 있습니다. 이는 WebDriver 기능을 통해 수행 할 수 있습니다. 두 가지 옵션 1) 장치 이름을 지정하십시오 2) 자신의 매개 변수를 입력하십시오 (제한적).

+0

이 더 이상 true가 아니며 허용 솔루션을 참조하십시오. – tomasz

5

이것은 매우 환영 받고 유용한 기능의 비트이지만 심각한 테스트를 위해 네트워크 시뮬레이션의 기존 방식이 여전히 유용하다고 생각합니다.

나는 리눅스 트래픽 컨트롤 (예 : LAMPe2e의 6 참조)을 사용하여 Charles web proxy (매우 유용한 도구 - 상업용) 및 사용자 자신의 레서피를 구현하여 알라딘 링크 된 솔루션 외에도 2 가지 솔루션을 알고 있습니다.

브라우저가 아닌 네트워크 연결을 방해하면 사용중인 브라우저와 별개로 영향을 적절하게 측정 할 수 있습니다.

왜 크롬 기능 만 사용하고 싶습니까?

관련 문제