如何用selenium和python获取网站的体宽?

时间:2017-03-05 15:45:46

标签: python html selenium selenium-webdriver

使用python 2.7和selenium webdriver,我想通过执行以下操作来测试网站是否适合移动设备:

  1. 在启用“移动模式”的Chrome浏览器中打开网站(使用mobile_emulation

  2. 获取网站的body宽度(以像素为单位)

  3. 当网站的body宽度较大时,假设900px,比大多数手机的宽度,例如400px,那么我知道该网站不适合移动设备。

  4. 我的代码:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    mobile_emulation = {
        "deviceMetrics": {"width": 360, "height": 640, "pixelRatio": 3.0},
        "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"}
    
    chrome_options = Options()
    chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
    driver = webdriver.Chrome(executable_path=r'C:\Users\Jacob\PycharmProjects\Testing\chromedriver_win32\chromedriver.exe')
    
    driver.get('https://www.tripadvisor.nl/')
    
    body_width = driver.execute_script("return document.body.offsetWidth;")
    
    print(body_width)
    

    结果:

    912
    
    Process finished with exit code 0
    

    问题:在这种情况下,website的移动版本的正确body宽度为360px,而不是912px(在开发工具中使用Chrome的“设备工具栏”进行检查)。所以我的脚本无法正常工作。我也有其他网址的这个问题。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您没有将chrome_options传递给司机,请参阅以下内容:

driver = webdriver.Chrome(executable_path=r'C:\Users\Jacob\PycharmProjects\Testing\chromedriver_win32\chromedriver.exe', crome_options=chrome_options)

怎么做:

>>> driver = webdriver.Chrome(chrome_options=chrome_options)
>>> driver.get('https://www.tripadvisor.nl/')
>>> driver.execute_script("return document.body.offsetWidth;")
360