51Testing软件测试论坛

标题: selenium PhantomJS 截图后的图片分辨率尺寸如何设置 [打印本页]

作者: 测试积点老人    时间: 2022-4-27 10:48
标题: selenium PhantomJS 截图后的图片分辨率尺寸如何设置
项目现在需要python做在线截屏,登陆页面截图是正常尺寸1500-2000(有时候尺寸会不一样,不只为何产生),但是登陆进去后尺寸宽度瞬间变到10015。拉宽了5倍,请问下我可以固定这个尺寸吗。
目前采用了两个方法没有生效,
第一个:driver设置了尺寸,1920x1080,但是两个页面似乎都不生效,无论怎么改都不行,宽度小于500后,还会让click方法报错。
第二个:用了PIL.Image去调整尺寸和分辨率,但是它也只是缩放了图片,分辨率还是以前的。
[attach]137654[/attach]
[color=rgba(0, 0, 0, 0.75)]左边是登陆页面,右边是登陆后的

代码如下

  1. # 调用环境变量指定的PhantomJS浏览器,创建浏览器对象
  2.     driver = webdriver.PhantomJS(executable_path="./phantomjs-2.1.1-macosx/bin/phantomjs",
  3.                                  service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any',
  4.                                                '--web-security=false'])
  5.     now = time.time()
  6.     currentTime = now
  7.     # 设置屏幕大小,防止click找不到id
  8.     driver.set_window_size(1920, 1080)
  9.     driver.maximize_window()
  10.     # driver.set_window_size(500, 1080)
  11.     # 设置超时时间,防止已经加载完毕依然在等待(get与click操作等待时长超过1分钟)
  12.     driver.set_page_load_timeout(2)

  13.     # 开始访问页面
  14.     try:
  15.         driver.get(target["url"])
  16.     except TimeoutException:
  17.         driver.execute_script("window.stop")
  18.     now = time.time()
  19.     print("耗时:" + str(now - currentTime))
  20.     currentTime = now
  21.     time.sleep(2)

  22.     # 登陆页面截图
  23.     driver.save_screenshot("./pic/waf/waf_login_empty.png")

  24.     # 输入用户名密码
  25.     driver.find_element_by_id(target["usernameId"]).send_keys(target["username"])
  26.     # time.sleep(4)
  27.     driver.find_element_by_id(target["passwordId"]).send_keys(target["password"])
  28.     driver.save_screenshot("./pic/waf/waf_login.png")

  29.     # 点击登录
  30.     ele = driver.find_element_by_id(target["loginId"])
  31.     now = time.time()
  32.     print("获取login耗时:" + str(now - currentTime))
  33.     currentTime = now

  34.     try:
  35.         ele.click()
  36.     except TimeoutException:
  37.         driver.execute_script("window.stop")

  38.     now = time.time()
  39.     print("click耗时:" + str(now - currentTime))
  40.     currentTime = now
  41.     # driver.find_element_by_xpath("//input[@id='loginButton' and @class='submit'] ").click()
  42.     # driver.find_element_by_xpath('//*[@id="' + target["loginId"] + '"]').click()

  43.     time.sleep(2)

  44.     # 获取新的页面快照
  45.     try:
  46.         driver.get(target["url"])
  47.     except TimeoutException:
  48.         driver.execute_script("window.stop")

  49.     driver.save_screenshot("./pic/waf/index.png")
  50.     # 设置图片尺寸
  51.     indexImage = Image.open("./pic/waf/index.png")
  52.     (x, y) = indexImage.size
  53.     x_s = 2304
  54.     y_s = int(y * x_s / x)
  55.     indexImage.resize((x_s, y_s), Image.ANTIALIAS).save("./pic/waf/index1.png", dpi=(x_s, y_s))
  56.     now = time.time()
  57.     print("图片设置大小耗时:" + str(now - currentTime))

  58.     # 截图相关图片
  59.     dataInfo = target["dataInfo"]
  60.     equ = target["equ"]
  61.     # driver.set_window_size(600, 1080)
  62.     for di in dataInfo:
  63.         for d in di:
  64.             try:
  65.                 driver.find_element_by_id(d).click()
  66.             except TimeoutException:
  67.                 driver.execute_script("window.stop")
  68.             time.sleep(2)
  69.         driver.save_screenshot(equ.value["picPath"] + "/wafversion.png")

  70.     # 打印网页渲染后的源代码
  71.     # print(driver.page_source)
  72.     # 获取当前页面的cookie
  73.     print("cookie:")
  74.     print(driver.get_cookies())

  75.     return True;
复制代码



作者: 郭小贱    时间: 2022-4-28 10:04
driver.viewportSize={'width':XXX,'height':YYY}  试试可行不?
作者: bellas    时间: 2022-4-28 10:56
等大神
作者: qqq911    时间: 2022-4-28 11:22
这个是在配置文件里设置的把
作者: jingzizx    时间: 2022-4-28 16:43
应该可用固定,感觉在操作过程中造成的拉伸
作者: kallinr    时间: 2022-4-28 17:15
分辨率直接在函数里设置




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2