【发布时间】:2019-07-12 05:18:57
【问题描述】:
我正在加载一个使用 Selenium WebDriver 和 Python 进行网络抓取的网站。
我必须从中加载一个表格,当不使用 headless = True 时它工作得非常好。
表格本身实际加载,但在这种情况下显示“未找到结果”,否则会获取数据元素。
我尝试通过禁用无头模式来测试代码是否正常工作。它的工作原理就像一个魅力,每次都能正确加载表格并包含完整的元素。一旦我使用无头,它就会丢失表数据。
(请注意,它仍会加载表格及其标题,它会显示“未找到结果”而不是数据元素)
我还尝试使用参数 'user=some headed user' 伪造有头用户
我还尝试启用/禁用一堆 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 |
-使用无头模式:
|名称 - 强制执行者 - 类型 - 有效期自 - 有效期至 |
|未找到结果。 |
【问题讨论】:
标签: google-chrome selenium-webdriver selenium-chromedriver google-chrome-headless web-testing