Python:Selenium全屏打开网页。
故障分析:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:“xpath”,“selector”:“//*[@id=“userName1”]”}
一、背景
在学习selenium时,我们获取网页上的数据,会发现出现一种情况,元素明明在页面上,但却怎么也定位不上。经过排查,发现执行程序时打开网页状态为窗口化的形式,导致一部分没有显示出来的数据,就没有加载出来,所以我们通过正常元素定位是定位不到的。
我们可以将打开网页的模式改成全屏模式,这样就可以保证元素完全加载出来。
二、问题现象
2.1 代码显示
import time
from selenium.webdriver.common.by import By
from selenium import webdriver
url='https://www.baidu.com/'
driver=webdriver.Chrome()
driver.get(url)
2.2 页面显示

此时页面显示为这样的窗口化,因此在某些页面上,被隐藏部分的内容,这时没有刷新出来,无法通过元素定位。
三、解决方案
3.1 代码展示
这种情况最直白的方式就是将窗口化修改成全屏状态显示,我们可以通过options这个参数进行设置。如下:
import time
import selenium.webdriver.chrome.options
from selenium.webdriver.common.by import By
from selenium import webdriver
#配置Chrome的选项
options=webdriver.ChromeOptions()#设置Chrome打开方式为全屏打开
options.add_argument('start-maximized')
url='https://www.baidu.com/'#调用配置参数
driver=webdriver.Chrome(options=options)
driver.get(url)
time.sleep(10)
3.2 页面显示
默认打开就是全屏显示:
四、总结
4.1 推荐
隐藏页面的属性见文章:Selenium隐藏浏览器页面,更改下载路径见文章:Selenium修改默认下载文件路径。
4.2 拓展
浏览器的一些打开方式、属性等都可以通过更改
options
参数进行修改。在这里我罗列了一些仅供参考。可根据自己的需要进行帅选,如有疑问可共同讨论。
options.add_argument(‘headless’)# 无头模式
options.add_argument(‘window-size={}x{}’.format(width, height))# 直接配置大小和set_window_size一样
options.add_argument(‘disable-gpu’)# 禁用GPU加速
options.add_argument(‘proxy-server={}’.format(self.proxy_server))# 配置代理
options.add_argument(’–no-sandbox’)# 沙盒模式运行
options.add_argument(’–disable-setuid-sandbox’)# 禁用沙盒
options.add_argument(’–disable-dev-shm-usage’)# 大量渲染时候写入/tmp而非/dev/shm
options.add_argument(’–user-data-dir={profile_path}’.format(profile_path))# 用户数据存入指定文件
options.add_argument('no-default-browser-check)# 不做浏览器默认检查
options.add_argument("–disable-popup-blocking")# 允许弹窗
options.add_argument("–disable-extensions")# 禁用扩展
options.add_argument("–ignore-certificate-errors")# 忽略不信任证书
options.add_argument("–no-first-run")# 初始化时为空白页面
options.add_argument(’–start-maximized’)# 最大化启动
options.add_argument(’–disable-notifications’)# 禁用通知警告
options.add_argument(’–enable-automation’)# 通知(通知用户其浏览器正由自动化测试控制)
options.add_argument(’–disable-xss-auditor’)# 禁止xss防护
options.add_argument(’–disable-web-security’)# 关闭安全策略
options.add_argument(’–allow-running-insecure-content’)# 允许运行不安全的内容
options.add_argument(’–disable-webgl’)# 禁用webgl
options.add_argument(’–homedir={}’)# 指定主目录存放位置
options.add_argument(’–disk-cache-dir={临时文件目录}’)# 指定临时文件目录
options.add_argument(‘disable-cache’)# 禁用缓存
options.add_argument(‘excludeSwitches’,[‘enable-automation’])# 开发者模式
版权归原作者 小小狒狒君 所有, 如有侵权,请联系我们删除。