1:web网站使用了GrowingIO平台进行埋点,如何进行自动化测试这些埋点,目前是靠谷歌浏览器的插件进行人工检查;要求需要一个详细的方,可以使用python+selenium或者其他类型的自动化测试方法
2:需要写相关代码时介绍下代码用处,断言,例如当你模拟在页面滑动和点击的时候,如何判定成功请求了一个曝光和点击行为
3:chat回答暂时不做考虑,因为chat上的代码示例不完整,许多引用的名称未说明用意和来处

1:web网站使用了GrowingIO平台进行埋点,如何进行自动化测试这些埋点,目前是靠谷歌浏览器的插件进行人工检查;要求需要一个详细的方,可以使用python+selenium或者其他类型的自动化测试方法
2:需要写相关代码时介绍下代码用处,断言,例如当你模拟在页面滑动和点击的时候,如何判定成功请求了一个曝光和点击行为
3:chat回答暂时不做考虑,因为chat上的代码示例不完整,许多引用的名称未说明用意和来处

关注解决方案:
!pip install selenium
!pip install pyvirtualdisplay
从GrowingIO的官网获取您的项目代码片段。
编写Python脚本,初始化WebDriver并访问您的网站:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from pyvirtualdisplay import Display
display = Display(visible=0, size=(1200, 800))
display.start()
chrome_options = Options()
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--dns-prefetch-disable")
chrome_options.add_argument("--ignore-certificate-errors")
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.example.com")
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
driver.find_element_by_xpath("//a[contains(text(),'Contact')]").click()
| Field | Value |
|---|---|
| Scheme | https |
| Host | api.growingio.com |
| Path | /v3/projects/xxx/events |
| Method | POST |
| Status | 200 |
| Request body | { "eid": "xxx", "et": "view", "ver": "2.1", "d": { "page": { "s": 1080, "t": "Example Page Title" }, "time": 1569290853564, "loc": "https://www.example.com/contact", "ref": "https://www.example.com", "bloc": { "s": 1056, "t": "Example Page Body Title", "idx": 0 } }, "l": "en-US", "p": "web", "pl": "Chrome", "b": "Chrome", "bv": "77.0.3865.75", "ak": "xxx", "ds": 1536x864, "sid": "xxx", "uid": "xxx" } |
| Response body | { "code": "OK", "data": "2020-07-16 21:00:14.927727" } |
import requests
def check_event_request(event_type):
events = driver.execute_script("return window.__growing_middleware_events")
event_json = None
for event in events:
if "et" in event and event["et"] == event_type:
event_json = event
break
assert event_json is not None, f"No {event_type} event found in __growing_middleware_events"
response = requests.post("https://api.growingio.com/v3/projects/xxx/events", json=event_json)
assert response.status_code == 200, f"Failed to send {event_type} event to GrowingIO API"
check_event_request()方法,检查是否成功发送了相应的事件:check_event_request("view")
check_event_request("click")
注意,您需要将“xxx”替换为您的GrowingIO项目ID。