Selenium 同一个元素无头模式下不可见有头模式可见?

醋精测试媛 · 2021年03月02日 · 最后由 醋精测试媛 回复于 2021年03月03日 · 2005 次阅读

无头模式下,有一个 button <button type="button" class="el-button set-2-hours el-button--text el-button--small"><!----><!----><span>设置</span></button>,查找到该元素并输出 element.is_displayed(),结果为 False。

但是这个按钮确实可见,而且有头模式下 element.is_displayed() 为 True, 这是为什么?

共收到 10 条回复 时间 点赞
seleniumer 回复
  • 打不开你的链接
  • 最好用 markdown 排版,上面是链接。
seleniumer 回复
  • 超级链接 - [markdown](https://testerhome.com/markdown)
小邹 回复

好的,谢谢~我试试!

我明白你的意思了,你可以试试这个 driver.set_window_position(x=-8,y=-8)
x,y 是浏览器左上角的坐标值,我电脑(-8,-8)差不多就是左上角
你可以一直输出 driver.get_window_position() 的值来看哪个坐标适合你的需求

小邹 回复

谢谢你的回复,我之前已经增加了option.add_experimental_option("excludeSwitches", ['enable-automation'])
位置如下:

options.add_argument("--headless")  # => 为Chrome配置无头模式
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_argument("--window-size=1600,900")  # => 设置无头浏览器尺寸为1600.900

但是仍然不在左上方,这很影响截图和部分元素的可见性。

会不会是浏览器被自动化程序控制的提示影响?
加一个这个试试?options.add_argument('--disable-infobars')
chrome 版本较新的用这个 option.add_experimental_option("excludeSwitches", ['enable-automation'])

小邹 回复

真的是这个原因!

  • 为什么options.add_argument('--start-maximized')不可行,但是driver.set_window_size(1920, 1080)可行呢?
  • 我之前也是直接设置窗口分辨率,但是发现一个问题,当我撤销无头模式,并且设置窗口分辨率时,窗口的起始点并不在左上角,而是离左上角有一点的距离的位置,所以才换的,对于这个问题有没有解决的办法呢?@zyc
小邹 回复

我的是options.add_argument('--start-maximized'),应该是一样的效果吧。

试试设置一下分辨率?driver.set_window_size(1920, 1080)
之前遇到过一个问题,就是无头模式设置浏览器最大化后实际不生效。不清楚你是不是这种情况

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册