Fix HTML retrieval by using browser.getLocator() for selector operations (#745)
* Fix HTML retrieval by using browser.getLocator() for selector operations This PR fixes an issue where HTML content retrieval was not working properly when using selectors. **Problem:** The `get html` command and other selector-based operations were failing because they were using `page.locator()` directly instead of the browser manager's locator method. **Changes:** - Updated `handleContent()` to use `browser.getLocator()` instead of `page.locator()` for HTML retrieval with selectors - Applied the same fix to other affected functions: `handleCount()`, `handleBoundingBox()`, `handleInnerText()`, `handleInnerHtml()`, and `handleSetValue()` - Ensures consistent locator handling across all selector-based operations **Implementation Details:** The fix replaces direct `page.locator(command.selector)` calls with `browser.getLocator(command.selector)` to ensure proper element selection and interaction through the browser manager's abstraction layer. Fixes #735 * Fix remaining page.locator() calls to use browser.getLocator() Apply the same fix to all remaining functions that were using page.locator(command.selector) directly instead of going through browser.getLocator(): handleWheel, handleHighlight, handleClear, handleSelectAll, handleDispatch, handleNth, handleMultiSelect, and handleDiffScreenshot. --------- Co-authored-by: ctate <366502+ctate@users.noreply.github.com>
This commit is contained in:
+25
-24
@@ -1056,7 +1056,8 @@ async function handleContent(
|
||||
|
||||
let html: string;
|
||||
if (command.selector) {
|
||||
html = await page.locator(command.selector).innerHTML();
|
||||
const locator = browser.getLocator(command.selector);
|
||||
html = await locator.innerHTML();
|
||||
} else {
|
||||
html = await page.content();
|
||||
}
|
||||
@@ -1704,8 +1705,8 @@ async function handleIsChecked(
|
||||
}
|
||||
|
||||
async function handleCount(command: CountCommand, browser: BrowserManager): Promise<Response> {
|
||||
const page = browser.getPage();
|
||||
const count = await page.locator(command.selector).count();
|
||||
const locator = browser.getLocator(command.selector);
|
||||
const count = await locator.count();
|
||||
return successResponse(command.id, { count });
|
||||
}
|
||||
|
||||
@@ -1713,8 +1714,8 @@ async function handleBoundingBox(
|
||||
command: BoundingBoxCommand,
|
||||
browser: BrowserManager
|
||||
): Promise<Response> {
|
||||
const page = browser.getPage();
|
||||
const box = await page.locator(command.selector).boundingBox();
|
||||
const locator = browser.getLocator(command.selector);
|
||||
const box = await locator.boundingBox();
|
||||
return successResponse(command.id, { box });
|
||||
}
|
||||
|
||||
@@ -2109,7 +2110,7 @@ async function handleWheel(command: WheelCommand, browser: BrowserManager): Prom
|
||||
const page = browser.getPage();
|
||||
|
||||
if (command.selector) {
|
||||
const element = page.locator(command.selector);
|
||||
const element = browser.getLocator(command.selector);
|
||||
await element.hover();
|
||||
}
|
||||
|
||||
@@ -2148,14 +2149,14 @@ async function handleHighlight(
|
||||
command: HighlightCommand,
|
||||
browser: BrowserManager
|
||||
): Promise<Response> {
|
||||
const page = browser.getPage();
|
||||
await page.locator(command.selector).highlight();
|
||||
const locator = browser.getLocator(command.selector);
|
||||
await locator.highlight();
|
||||
return successResponse(command.id, { highlighted: true });
|
||||
}
|
||||
|
||||
async function handleClear(command: ClearCommand, browser: BrowserManager): Promise<Response> {
|
||||
const page = browser.getPage();
|
||||
await page.locator(command.selector).clear();
|
||||
const locator = browser.getLocator(command.selector);
|
||||
await locator.clear();
|
||||
return successResponse(command.id, { cleared: true });
|
||||
}
|
||||
|
||||
@@ -2163,8 +2164,8 @@ async function handleSelectAll(
|
||||
command: SelectAllCommand,
|
||||
browser: BrowserManager
|
||||
): Promise<Response> {
|
||||
const page = browser.getPage();
|
||||
await page.locator(command.selector).selectText();
|
||||
const locator = browser.getLocator(command.selector);
|
||||
await locator.selectText();
|
||||
return successResponse(command.id, { selected: true });
|
||||
}
|
||||
|
||||
@@ -2172,8 +2173,8 @@ async function handleInnerText(
|
||||
command: InnerTextCommand,
|
||||
browser: BrowserManager
|
||||
): Promise<Response> {
|
||||
const page = browser.getPage();
|
||||
const text = await page.locator(command.selector).innerText();
|
||||
const locator = browser.getLocator(command.selector);
|
||||
const text = await locator.innerText();
|
||||
return successResponse(command.id, { text });
|
||||
}
|
||||
|
||||
@@ -2182,7 +2183,8 @@ async function handleInnerHtml(
|
||||
browser: BrowserManager
|
||||
): Promise<Response> {
|
||||
const page = browser.getPage();
|
||||
const html = await page.locator(command.selector).innerHTML();
|
||||
const locator = browser.getLocator(command.selector);
|
||||
const html = await locator.innerHTML();
|
||||
return successResponse(command.id, { html, origin: page.url() });
|
||||
}
|
||||
|
||||
@@ -2200,8 +2202,8 @@ async function handleSetValue(
|
||||
command: SetValueCommand,
|
||||
browser: BrowserManager
|
||||
): Promise<Response> {
|
||||
const page = browser.getPage();
|
||||
await page.locator(command.selector).fill(command.value);
|
||||
const locator = browser.getLocator(command.selector);
|
||||
await locator.fill(command.value);
|
||||
return successResponse(command.id, { set: true });
|
||||
}
|
||||
|
||||
@@ -2209,8 +2211,8 @@ async function handleDispatch(
|
||||
command: DispatchEventCommand,
|
||||
browser: BrowserManager
|
||||
): Promise<Response> {
|
||||
const page = browser.getPage();
|
||||
await page.locator(command.selector).dispatchEvent(command.event, command.eventInit);
|
||||
const locator = browser.getLocator(command.selector);
|
||||
await locator.dispatchEvent(command.event, command.eventInit);
|
||||
return successResponse(command.id, { dispatched: command.event });
|
||||
}
|
||||
|
||||
@@ -2360,8 +2362,7 @@ async function handleGetByTestId(
|
||||
}
|
||||
|
||||
async function handleNth(command: NthCommand, browser: BrowserManager): Promise<Response> {
|
||||
const page = browser.getPage();
|
||||
const base = page.locator(command.selector);
|
||||
const base = browser.getLocator(command.selector);
|
||||
const locator = command.index === -1 ? base.last() : base.nth(command.index);
|
||||
|
||||
switch (command.subaction) {
|
||||
@@ -2528,8 +2529,8 @@ async function handleMultiSelect(
|
||||
command: MultiSelectCommand,
|
||||
browser: BrowserManager
|
||||
): Promise<Response> {
|
||||
const page = browser.getPage();
|
||||
const selected = await page.locator(command.selector).selectOption(command.values);
|
||||
const locator = browser.getLocator(command.selector);
|
||||
const selected = await locator.selectOption(command.values);
|
||||
return successResponse(command.id, { selected });
|
||||
}
|
||||
|
||||
@@ -2738,7 +2739,7 @@ async function handleDiffScreenshot(
|
||||
const page = browser.getPage();
|
||||
let screenshotBuffer: Buffer;
|
||||
if (command.selector) {
|
||||
const locator = browser.getLocatorFromRef(command.selector) || page.locator(command.selector);
|
||||
const locator = browser.getLocator(command.selector);
|
||||
screenshotBuffer = await locator.screenshot({ type: 'png' });
|
||||
} else {
|
||||
screenshotBuffer = await page.screenshot({ fullPage: command.fullPage, type: 'png' });
|
||||
|
||||
Reference in New Issue
Block a user