Python:Selenium页面显示不全,元素定位报错->全屏显示页面。

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’]) # 开发者模式
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值