python自动填写问卷星

python自动填写问卷星

参考链接1
参考链接2

用python实现自动填问卷,通过智能验证以及滑动验证

1. 下载浏览器驱动

python自动化填写问卷需要依赖浏览器驱动,这里使用的是谷歌浏览器,所以需要下载chromedriver,且下载的版本要和浏览器版本一致。

  • 首先打开谷歌浏览器,点击“帮助”——“关于Google Chrome”,查看浏览器版本。如图:

20230319172412

可以看到谷歌浏览器的版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqQaduZ9-1679225429575)(null)]

查看完版本后打开链接:CNPM Binaries Mirror下载对应系统对应版本的谷歌浏览器驱动。如图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UHwdhigs-1679225429555)(null)]

因为我这里使用的是ubuntu系统故下载linux版本的(其他os同理)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XeZNta5z-1679225429521)(null)]

下载完了之后解压
再接下来是配置执行权限:

cd chromedriver_linux64
chmod +x chromedriver

接下来再把它以动到usr/bin 目录下:

sudo mv chromedriver /usr/bin/

测试
接下来进行一个测试。

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionschrome_opt = Options()  # 创建参数设置对象.
chrome_opt.add_argument('--headless')  # 无界面化.
chrome_opt.add_argument('--disable-gpu')  # 配合上面的无界面化.
chrome_opt.add_argument('--window-size=1366,768')  # 设置窗口大小, 窗口大小会有影响.
chrome_opt.add_argument("--no-sandbox") #使用沙盒模式运行
# 创建Chrome对象并传入设置信息.
browser = webdriver.Chrome(chrome_options=chrome_opt)
url = "https://www.baidu.com/"
browser.get(url)
print(browser.page_source)
browser.quit()

如果界面里输入了百度首页的html代码就说明成功了。

2. selenium基本配置

selenium本质是通过驱动浏览器,完全模拟浏览器的操作,就像真正的用户在操作一样。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。

selenium库可以通过终端命令pip install selenium安装。

下面是通用的selenium基本配置

import random          # 用于产生随机数
import time            # 用于延时
from selenium.webdriver.common.by import By      #导入By包进行元素定位
from selenium import webdriver
from selenium.webdriver.chrome.options import Options#实例化一个启动参数对象
chrome_options = Options()#添加启动参数
chrome_options.add_argument('user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"')  # 添加请求头
chrome_options.add_argument('--disable-blink-features=AutomationControlled')# 防止被识别
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])     #设置开发者模式启动chrome_options.add_experimental_option('useAutomationExtension', False)    # 关闭selenium对chrome driver的自动控制# chrome_options.maximize_window()      # 网页最大化#chrome_options.add_argument('headless')    #设置浏览器以无界面方式运行

上面的user-agent需要根据你自己的操作系统来进行修改,这里我的是linux系统

可以通过以下方法获取这个值

打开谷歌浏览器,打开百度网页(其他网页都可以),然后打开开发者模式(按F12),在百度网页上随便点击一个链接,回到百度那个页面,选择开发者模式中的Network,滑到最下面就可以看到user-agent

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qTSV0jhW-1679225434664)(null)]

3.答题代码
  • 设置驱动程序
browser = webdriver.Chrome(options=chrome_options)     #设置驱动程序,启动浏览器  (实现以特定参数启动)
browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})       #用来执行Chrome开发这个工具命令
  • 获取问卷内容
browser.get('https://www.***.**/**/*****.aspx')        # 获取问卷信息(此处填问卷链接)
  • 单选题
# 问题1的点击 (性别)
randomId = random.randint(1, 2)       # 随机点击第一个选项或第二个选项#js实现方式
js = "document.getElementById(\"q1_" + str(randomId) + "\").checked = true"
browser.execute_script(js)         #使用js实现点击的效果(调用js方法,同时执行javascript脚本)
js = "document.getElementById(\"q1_" + str(randomId) + "\").click()"
browser.execute_script(js)         #使用js实现点击的效果(调用js方法,同时执行javascript脚本)# 延时 太快会被检测是脚本
time.sleep(1)# 问题2    (年龄)
randomId = random.randint(2, 4)   # 随机数,5个多选框 随机点击
# js实现方式
js = "document.getElementById(\"q2_" + str(randomId) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q2_" + str(randomId) + "\").click()"    # 拼接字符串的方式 js找到对应id 点击按钮
browser.execute_script(js)
# 延时
time.sleep(0.1)
  • 多选题
# 问题5    
randomId = random.randint(1, 3)       # 随机数选择(选多少个)for i in range(1, randomId + 1):       # 循环 实现多选效果randomId1 = random.randint(1, 6)   #随机选择第1到第6个选项之一# 两种js实现方式js = "document.getElementById(\"q5_" + str(randomId1) + "\").checked = true"browser.execute_script(js)js = "document.getElementById(\"q5_" + str(randomId1) + "\").click()"browser.execute_script(js)# 延时
time.sleep(1)
  • 填空题
 
# 问题25#自定义要填的内容
block = ["定义第1个填空","定义第2个填空","定义第3个填空","定义第4个填空","定义第5个填空","定义第6个填空","无"]  #在上述内容中随机选择一个填入
randomId = random.randint(0, 5)          #(数值下标从0开始)#在题目中随机输入上述内容
browser.find_element_by_id("q25").send_keys(block[randomId])    # 延时
time.sleep(0.1)
4.提交+智能验证+滑块验证
  • 提交

首先查看问卷源代码,找到提交按钮在html代码中的位置,并复制“提交”按钮的xpath,如图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UZHTCgEw-1679225429594)(null)]

#点击提交
submit = browser.find_element_by_xpath("//*[@id='ctlNext']")    #网页源代码的xpath
submit.click()      #点击#延时 太快会被检测是脚本
time.sleep(0.5)
  • 智能验证

同理,找到确认智能验证提示框在html代码中的位置,并复制对应按钮的xpath,(xpath可能会变,如果下面代码无法使用,则采用上面的方法复制新的xpath代替下面代码中的)

# 模拟点击智能验证按钮
# 先点确认
browser.find_element(By.XPATH,'//*[@id="layui-layer1"]/div[3]/a').click()
time.sleep(1)
# 再点智能验证提示框,进行智能验证
browser.find_element_by_xpath("//div[@id='captcha']").click()
  • 滑块验证
from selenium.webdriver import ActionChains
def get_track(distance):  # distance为传入的总距离# 移动轨迹track = []# 当前位移current = 0# 计算间隔t = 0.2# 初速度v = 0while current < distance:# 加速度a = 100 + current*random.random()v0 = v# 当前速度v = v0 + a * t# 移动距离# move = v0 * t + 1 / 2 * a * t * tmove = v0 * t + a * t# 当前位移current += move# 加入轨迹track.append(round(move))return track  # track列表 返回的是整个滑动条的多个焦点,可以模拟鼠标的缓慢滑动def move_to_gap(driver,slider, tracks):  # slider是要移动的滑块,tracks是要传入的移动轨迹ActionChains(driver).click_and_hold(slider).perform()for x in tracks:ActionChains(driver).move_by_offset(xoffset=x, yoffset=0).perform()time.sleep(0.1)ActionChains(driver).release().perform()

上面get_track函数返回的是track列表(其中包含了移动的轨迹),定义当前位移current=0,时间间隔t=0.2,初始速度v=0,接下来通过判断语句,判断当前距离是否小于你所输入的总距离,如果成立,则通过物理的知识,通过加速度a,速度v计算位移,然后将它加到current中。

我改了一下原作者的代码,将加速度的大小随着current大小不规则变化,因为我发现固定加速度会使滑块验证多一个刷新重新验证,随机的加速度来滑动保证每次滑动都不太一样来防止检测出来

move_to_gap函数

①ActionChains(driver).click_and_hold(slider).perform()中

click_and_hold(slider)---点击鼠标左键,不松开,其中slider为需要定位要移动的滑块
(例如huakuai = driver.find_element_by_css_selector('#nc_1_n1z'))
perform()---执行该动作;

②接下来遍历tracks

ActionChains(driver).move_by_offset(xoffset=x, yoffset=0).perform()中move_by_offset(xoffset=x, yoffset=0)---鼠标向右移动x的px

③ActionChains(driver).release().perform()中

release()---释放

在主函数中使用,放在智能验证后面,最后关闭浏览器

try:huakuai = browser.find_element_by_css_selector('#nc_1_n1z')move_to_gap(browser,huakuai, get_track(328))time.sleep(2)
except:pass
finally:browser.quit() # 关闭浏览器
5. 完整代码示例

具体问卷还需要自己对应修改

import random          # 用于产生随机数
import time            # 用于延时
from selenium.webdriver.common.by import By      #导入By包进行元素定位
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import ActionChains
#实例化一个启动参数对象
chrome_options = Options()#添加启动参数
chrome_options.add_argument('user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"')  # 添加请求头
chrome_options.add_argument('--disable-blink-features=AutomationControlled')# 防止被识别
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])     #设置开发者模式启动chrome_options.add_experimental_option('useAutomationExtension', False)    # 关闭selenium对chrome driver的自动控制# chrome_options.maximize_window()      # 网页最大化#chrome_options.add_argument('headless')    #设置浏览器以无界面方式运行
def get_track(distance):  # distance为传入的总距离# 移动轨迹track = []# 当前位移current = 0# 计算间隔t = 0.2# 初速度v = 0while current < distance:# 加速度a = 100 + current*random.random()v0 = v# 当前速度v = v0 + a * t# 移动距离# move = v0 * t + 1 / 2 * a * t * tmove = v0 * t + a * t# 当前位移current += move# 加入轨迹track.append(round(move))return track  # track列表 返回的是整个滑动条的多个焦点,可以模拟鼠标的缓慢滑动def move_to_gap(driver,slider, tracks):  # slider是要移动的滑块,tracks是要传入的移动轨迹ActionChains(driver).click_and_hold(slider).perform()for x in tracks:ActionChains(driver).move_by_offset(xoffset=x, yoffset=0).perform()time.sleep(0.1)ActionChains(driver).release().perform()num = 120
man = int(num*0.06)
woman = num - man
for epoch in range(num):browser = webdriver.Chrome(options=chrome_options)     #设置驱动程序,启动浏览器  (实现以特定参数启动)browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})       #用来执行Chrome开发这个工具命令browser.get('https://www.wjx.cn/xx/xxx.aspx')        # 获取问卷信息(此处填问卷链接)# 问题1的点击 (性别)if man>0 and woman>0:sex = random.randint(1, 2)       # 随机点击第一个选项或第二个选项if sex == 1:man -= 1else:woman -= 1elif man>0 and woman==0:sex = 1man -= 1elif man==0 and woman>0:sex = 2woman -= 1else:break#js实现方式js = "document.getElementById(\"q1_" + str(sex) + "\").checked = true"browser.execute_script(js)         #使用js实现点击的效果(调用js方法,同时执行javascript脚本)js = "document.getElementById(\"q1_" + str(sex) + "\").click()"browser.execute_script(js)         #使用js实现点击的效果(调用js方法,同时执行javascript脚本)# 延时 太快会被检测是脚本time.sleep(1)# 问题2    (年龄)if sex == 1:seq = [2, 3]weights = [0.7,0.3]elif sex == 2:seq = [1, 2, 3, 4, 5]weights = [0.35,0.45,0.1,0.09,0.01]age = random.choices(seq,weights)[0]# js实现方式js = "document.getElementById(\"q2_" + str(age) + "\").checked = true"browser.execute_script(js)js = "document.getElementById(\"q2_" + str(age) + "\").click()"    # 拼接字符串的方式 js找到对应id 点击按钮browser.execute_script(js)# 延时time.sleep(0.1)# 问题3    教龄if age == 1:teachyear = 1elif age == 2:teachyear = random.randint(1,2)elif age == 3:teachyear = random.randint(2,4)elif age == 4:teachyear = random.randint(3,4)elif age == 5:teachyear = 4# js实现方式js = "document.getElementById(\"q3_" + str(teachyear) + "\").checked = true"browser.execute_script(js)js = "document.getElementById(\"q3_" + str(teachyear) + "\").click()"    # 拼接字符串的方式 js找到对应id 点击按钮browser.execute_script(js)# 延时time.sleep(0.1)# 问题3    学历if age == 1 or 2:seq = [2,3,4]weights = [0.4,0.5,0.1]edu = random.choices(seq,weights)[0]elif age == 3 or 4:seq = [3, 4]weights = [0.2,0.8]edu = random.choices(seq,weights)[0]elif age == 5:edu = 4# js实现方式js = "document.getElementById(\"q4_" + str(edu) + "\").checked = true"browser.execute_script(js)js = "document.getElementById(\"q4_" + str(edu) + "\").click()"    # 拼接字符串的方式 js找到对应id 点击按钮browser.execute_script(js)# 延时time.sleep(0.1)# 问题3    婚育if age == 1:seq = [2,3]weights = [0.15,0.85]marry = random.choices(seq,weights)[0]elif age == 2:seq = [1,2,3]weights = [0.4,0.35,0.25]marry = random.choices(seq,weights)[0]elif age == 3 or 4:seq = [1,2,3]weights = [0.9,0.09,0.01]marry = random.choices(seq,weights)[0]elif age == 5:marry = 1# js实现方式js = "document.getElementById(\"q5_" + str(marry) + "\").checked = true"browser.execute_script(js)js = "document.getElementById(\"q5_" + str(marry) + "\").click()"    # 拼接字符串的方式 js找到对应id 点击按钮browser.execute_script(js)# 延时time.sleep(0.1)for i in range(6,32):if i == 8:if edu == 2:seq = [2,3,4]weights = [0.4,0.35,0.15]else:seq = [2,3,4,5]weights = [0.1,0.25,0.4,0.25]elif i == 21:if teachyear in [3,4]:seq = [2,3,4,5]weights = [0.1,0.2,0.3,0.4]elif teachyear == 2:seq = [1,2,3,4,5]weights = [0.1,0.2,0.5,0.2,0.1]else:seq = [1,2,3,4,5]weights = [0.4,0.3,0.2,0.07,0.03]elif teachyear in [3,4]:seq = [1,2,3,4]weights = [0.1,0.45,0.35,0.1]elif teachyear == 2:seq = [2,3,4,5]weights = [0.1,0.35,0.45,0.1]elif teachyear == 1:seq = [3,4,5]weights = [0.25,0.4,0.35]pressure = random.choices(seq,weights)[0]# js实现方式js = "document.getElementById(\"q"+str(i)+"_" + str(pressure) + "\").checked = true"browser.execute_script(js)js = "document.getElementById(\"q"+str(i)+"_" + str(pressure) + "\").click()"    # 拼接字符串的方式 js找到对应id 点击按钮browser.execute_script(js)# 延时time.sleep(0.1)for i in range(32,42):seq = [2,3,4,5]weights = [0.05,0.15,0.5,0.3]pressure = random.choices(seq,weights)[0]# js实现方式js = "document.getElementById(\"q"+str(i)+"_" + str(pressure) + "\").checked = true"browser.execute_script(js)js = "document.getElementById(\"q"+str(i)+"_" + str(pressure) + "\").click()"    # 拼接字符串的方式 js找到对应id 点击按钮browser.execute_script(js)# 延时time.sleep(0.1)#点击提交submit = browser.find_element_by_xpath("//*[@id='ctlNext']")    #网页源代码的xpathsubmit.click()      #点击#延时 太快会被检测是脚本time.sleep(0.5)# 模拟点击智能验证按钮# 先点确认browser.find_element(By.XPATH,'//*[@id="layui-layer1"]/div[3]/a').click()time.sleep(1)# 再点智能验证提示框,进行智能验证browser.find_element_by_xpath("//div[@id='captcha']").click()time.sleep(4)try:huakuai = browser.find_element_by_css_selector('#nc_1_n1z')move_to_gap(browser,huakuai, get_track(328))time.sleep(2)except:passfinally:print("No.{} Finished".format(epoch))print("man has {}, woman has {}".format(man,woman))browser.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/44960.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

问卷星问卷数据怎么快速导入SPSSAU?

最近收到小伙伴询问问卷星导入的问卷数据怎么编码&#xff1f; 现在的问卷调查&#xff0c;很多都是通过网络问卷的方式进行&#xff0c;问卷星是一个专业的在线问卷调查、测评投票平台&#xff0c;如果你的问卷正好是在问卷星网站发放&#xff0c;填答&#xff0c;回收数据&am…

python问卷星模拟提交

*一、前言 ** 笔者在家闲得无聊&#xff0c;突然想突破一下问卷星的反爬虫机制&#xff0c;顺便刷刷问卷&#xff0c;于是就开始分析了。 ** 二、分析过程 ** 1、fiddler抓包 模拟提交首先当然是打开fiddler看看提交了什么包啦。 2、分析不变参数 我们先来看不变的参数&…

使用python实现问卷星自动答题功能——基础篇

题主在学习的过程中&#xff0c;老是有人来让填问卷星&#xff0c;就觉得人填的很麻烦&#xff0c;于是就自己动手写了一个python脚本来实现自动填写问卷星 1.首先我们得学会使用python里面的一个库&#xff0c;selenium&#xff0c;这个库是用来专门面对浏览器的一个库&#…

用Python实现问卷星自动填写(超详细!!!)

用Python实现问卷星自动填写&#xff08;超详细&#xff01;&#xff01;&#xff01;&#xff09; 前言一、配置环境1.1安装依赖1.2安装驱动 二、实战处理2.1、引入库函数2.2、程序所需函数详解&#xff08;1&#xff09;自定义单选函数&#xff08;2&#xff09;自定义多选函…

自动填写问卷星并提交

自动填写问卷星并提交 鉴于好多小伙伴要做数据分析的时候发放大量的问卷&#xff0c;但收回来的却寥寥无几&#xff0c;还受到其他小伙伴的冷眼&#xff0c;所以在下决定通过代码的方式&#xff0c;来实现问卷星的自动填写并提交。 以谷歌浏览器为例 1.随便到一个页面&#x…

【python】自动填写问卷星问卷及提交

前言&#xff1a;问卷是很好的网络调查方式之一&#xff0c;近年来&#xff0c;问卷星被广泛应用于各方面的调查。本文介绍了利用python代码自动填写问卷星基本题目&#xff0c;拥有自动填写、解决智能验证、批量提交问卷等功能。 目录 1.下载浏览器驱动 2. selenium基本配置…

利用GoogleTampermonkeyModify Headers实现问卷星调查问卷的自动填写提交

前言 首先一个月没有更新博客&#xff0c;是因为去苏州尝试了一下暑假工&#xff0c;然后对于大家在博客留下的评论和问题也没有来得及回复&#xff0c;实在不好意思。不得不说&#xff0c;暑假工挺累的&#xff0c;而且基本上在消磨时间&#xff0c;说实话也不算后悔&#xf…

Python实现问卷星调查问卷自动填写

文章目录 前言一、配置环境1.1 下载依赖selenium1.2 安装chrome驱动1.3 引入库 二、简易版快速上手教程1.自定义变量2.自定以函数3 主函数编写 三 逐步解析1 基础代码2 实现步骤 四 代码总结 前言 如何使用python实现对问卷的自动填写提交任务并且还能解决智能验证问题。 一、…

Mac 软件出现「意外退出」及「打不开」解决方法

解决方法 方法其实有很多种&#xff0c;这里介绍常用的几种 终端法需先安装Xcode或Apple命令行工具 如未装Xcode可以使用下列命令安装Apple命令行工具&#xff08;如安装有Xcode可忽略&#xff09; xcode-select --install 1.终端法 sudo codesign --force --deep --sign -…

postman能正常打开但不显示窗口

1.最近使用postman偶尔出现以下问题 postman在任务栏能正常打开&#xff0c;如下图&#xff0c;使用AltTab也能看到&#xff0c;但是窗口就是显示不了 2.解决方案 将鼠标放在任务栏上&#xff0c;使用快捷键Alt空格&#xff0c;弹出小窗口&#xff0c;然后点击弹框中的最大化…

MPAndroidChart的HorizontalBarChart数值显示不全问题

现在使用的版本是&#xff1a;v3.1.0 方案一&#xff1a; private HorizontalBarChart hor_bar_chart; hor_bar_chart(HorizontalBarChart) findViewById(R.id.hor_barchart); YAxis leftYAxishor_bar_chart.getAxisLeft(); // 设置y轴边距&#xff0c;解决数值过大显示不全问…

解决 echarts 图中 tooltip 文本内容太长导致显示不全

问题&#xff1a; 使用 tooltip 的 extraCssText&#xff0c;高效方便 tooltip: {show:true,trigger: "axis",confine: true, // 文本太长自动换行extraCssText: white-space: normal; word-break: break-all;, // 文本太长自动换行效果&#xff1a;

CoordinatorLayout显示不全问题

问题一 <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"android:layout_width"match_parent"android:layout_height&…

在html中页面不全,网页显示不全,教您网页显示不全怎么办

当我们在电脑系统中使用IE浏览器浏览网页时&#xff0c;偶尔会出现是否只查看安全内容的提示&#xff0c;甚至有可能会出现页面显示不全的情况。一般遇到这种情况会选择继续查看网页内容&#xff0c;怎么去处理&#xff1f;下面&#xff0c;小编给大家介绍网页显示不全的解决步…

CSS问题:导航栏设置通栏后,放大页面背景显示不全

问题描述&#xff1a; 正常显示时&#xff1a;将网页放大到150%后&#xff1a; 解决办法&#xff1a; 当导航栏设置为width:100%或不给宽&#xff0c;是相当于当前文档流而言的&#xff0c;也就是浏览器窗口的大小。 此时假设浏览器窗口大小为1000px&#xff0c;那么这个通栏…

关于小程序 input 组件内容显示不全(显示的长度不满 input 宽度)问题

今天在做表单的提交&#xff0c;其中input框出现了一个诡异的问题&#xff0c;就是内容显示不全&#xff08;显示的长度不满 input 宽度&#xff09;&#xff0c;用前愆訾的文章解决&#xff0c;地址http://www.cnblogs.com/miu-key/p/7168933.html。感谢博主~ 转载自&#xff…

wkwebview html5页面,WKWebView h5 页面显示不全问题

WKWebView h5 页面显示不全问题 首先先来看一下效果图如下所示: 1.png 2.png 图 1 下面的分享按钮只显示出一点, 当时想出现这样的 bug 无外乎两点 1.h5 那边设备兼容问题 2.ios 这边显示问题, 问了 h5, 说是直接加载底部的 CSS 样式, 安卓那边显示 OK, 最后看了 h5 的代码也没…

html玩游戏显示不全,客户端登录界面显示不全解决办法

《新天堂II》客户端登录界面显示不全解决办法 在登录《新天堂II》游戏过程正&#xff0c;如果您出现客户端TCLS 界面显示不完全问题&#xff0c;请按照以下步骤设置&#xff0c;进行解决。 双击游戏图标后&#xff0c;出现登录界面显示不完全&#xff0c;如下图&#xff0c;玩家…

layUI的页面显示不全解决方法

在做项目时页面显示不全 可以在layui的css中直接改属性 layui-tab-item 找到这个属性&#xff0c;直接修改高度&#xff0c;如果是谷歌浏览器的话记得清缓存。 还有就是在嵌入时修改属性 <iframe scrolling"no" frameborder"0" src" " wid…