使用 Selenium 的 Headless Chrome 未正确加载 web-page 元素

Headless Chrome with Selenium not loading the web-page elements correctly

我正在使用带有 Python 的 Selenium WebDriver 为 web-scraping 加载一个网站。
我必须从中加载一个 table,当不使用 headless = True 时它工作得很好。
table 本身实际加载,但在这种情况下显示 'No results found',否则获取数据元素。

我已经尝试通过禁用无头模式来测试代码是否正常工作。它就像一个魅力,每次都正确加载完整元素的 table 。一旦我使用无头,它就会错过 table 数据。
(注意它仍然加载 table 及其 headers,它显示 'No results found' 而不是数据元素)
我也试过用参数 'user=some headed user' 伪装用户
我也尝试了 enabling/disabling 一堆 chrome 选项,例如
disable gpu;从最大化屏幕开始;改变屏幕尺寸;绕过代理
以及通常用于调试无头 chrome 选项的所有其他内容。

代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys

service = webdriver.chrome.service.Service(r'C:/Program Files (x86)/SeleniumWrapper/chromedriver.exe')
service.start()
chrome_options = Options()

chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
chrome_options.add_argument("--disable-gpu")
chrome_options.headless = True

driver = webdriver.Remote(service.service_url, desired_capabilities=chrome_options.to_capabilities())

driver.get('https://cambodiantr.gov.kh/index.php?r=searchMeasures/index')

table = driver.find_element_by_xpath('//*[@id="measures-grid"]/table')
all_rows = table.find_elements_by_tag_name('tr')
print(all_rows[0].text)
print(all_rows[1].text)

结果:

-没有无头模式:
|名称 - 强制执行者 - 类型 - 有效期自 - 有效期至 |
|如果对注册所有者的商标提出异议,则可能会暂停进口货物的清关 - 农业、林业和渔业部 - 禁止 - 14-01-2012 - 31-12-9999 |

-无头模式:
|名称 - 强制执行者 - 类型 - 有效期自 - 有效期至 |
|未找到结果。 |

经过更多研究,我发现添加

chrome_options.add_argument('--lang=en_US') 

我程序的这个代码片段可以解决问题。

Headless chrome 不支持所有传入语言,因此某些页面对此反应不佳。支持页面输出的语言,正确加载页面。