程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Selenium Firefox无头返回不同结果大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决SELEnium Firefox无头返回不同结果?

开发过程中遇到SELEnium Firefox无头返回不同结果的问题如何解决?下面主要结合日常开发的经验,给出你关于SELEnium Firefox无头返回不同结果的解决方法建议,希望对你解决SELEnium Firefox无头返回不同结果有所启发或帮助;

理想情况下,使用和不使用firefox_options.headless = True不会对要渲染的DOM树中的元素产生任何重大影响,但就视口而言,可能会有重大不同。

作为一个例子,当GeckoDriver / firefox是与沿着初始化 选项的默认 视口 是 其中当GeckoDriver / firefox是没有初始化--headless选项的默认 视口 是 。

  • 示例代码:

    from SELEnium import webdriver
    

    from SELEnium.webdriver.support.ui import webdriverwait from SELEnium.webdriver.common.by import By from SELEnium.webdriver.support import expected_conditions as EC

    options = webdriver.firefoxOptions() options.headless = True driver = webdriver.firefox(options=options, executable_path=r’C:\Utility\browserDrivers\geckodriver.exe’) driver.get("https://www.google.com/”) webdriverwait(driver, 10).until(EC.element_to_be_clickable((By.name, “q”))) print (“headless firefox Initialized”) size = driver.get_window_size() print(“Window size: wIDth = {}px, height = {}px”.format(size[“wIDth”], size[“height”])) driver.quit() driver = webdriver.firefox(executable_path=r’C:\Utility\browserDrivers\geckodriver.exe’) driver.get("https://www.google.com/”) webdriverwait(driver, 10).until(EC.element_to_be_clickable((By.name, “q”))) print (“firefox Initialized”) size = driver.get_window_size() print(“Window size: wIDth = {}px, height = {}px”.format(size[“wIDth”], size[“height”])) driver.quit()

  • 控制台输出:

    headless firefox Initialized
    

    Window size: wIDth = 1366px, height = 768px firefox Initialized Window size: wIDth = 1382px, height = 744px

结论

从上面的观察中可以推断出,使用--headless选项GeckoDriver / firefox打开了具有减小的 视口浏览上下文 ,因此标识的元素数量可以 *

在使用GeckoDriver / firefox启动 浏览上下文时,请 始终以 模式打开或通过set_window_size()以下方式进行配置

from SELEnium import webdriver
from SELEnium.webdriver.support.ui import webdriverwait
from SELEnium.webdriver.common.by import By
from SELEnium.webdriver.support import expected_conditions as EC

options = webdriver.firefoxOptions()
options.headless = True
#options.add_argument("start-maximized")
options.add_argument("window-size=1400,600")
driver = webdriver.firefox(options=options, executable_path=r'C:\Utility\browserDrivers\geckodriver.exe')
driver.get("https://www.Google.com/")
driver.set_window_size(1920, 1080)

解决方法

当我抓取包含使用无头选项产品的页面时,我得到不同的结果。
对于同一个问题,一次我得到未排序的结果,而另一次我得到正确的排序顺序。

SELEnium firefox浏览器:

firefox_options = Options()
firefox_options.headless = True
browser = webdriver.Firefox(options=firefox_options,executable_path=firefox_driver)

@H_674_74@更新:

事实证明,广告弹出窗口隐藏了价格排序菜单。通过设置DebanjanB发布的恒定窗口大小,解决了问题。

感谢您的任何建议

大佬总结

以上是大佬教程为你收集整理的Selenium Firefox无头返回不同结果全部内容,希望文章能够帮你解决Selenium Firefox无头返回不同结果所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。