enhance checkbox detecting (#1840)
Co-authored-by: LawyZheng <lawyzheng1106@gmail.com>
This commit is contained in:
@@ -799,6 +799,21 @@ function isDatePickerSelector(element) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isCheckableDiv(element) {
|
||||||
|
const tagName = element.tagName.toLowerCase();
|
||||||
|
if (tagName !== "div") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
element.className &&
|
||||||
|
element.className.toString().includes("checkbox") &&
|
||||||
|
element.childElementCount === 0
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const isComboboxDropdown = (element) => {
|
const isComboboxDropdown = (element) => {
|
||||||
if (element.tagName.toLowerCase() !== "input") {
|
if (element.tagName.toLowerCase() !== "input") {
|
||||||
return false;
|
return false;
|
||||||
@@ -1300,6 +1315,7 @@ async function buildElementObject(
|
|||||||
isAngularDropdown(element) ||
|
isAngularDropdown(element) ||
|
||||||
isSelect2Dropdown(element) ||
|
isSelect2Dropdown(element) ||
|
||||||
isSelect2MultiChoice(element),
|
isSelect2MultiChoice(element),
|
||||||
|
isCheckable: isCheckableDiv(element),
|
||||||
};
|
};
|
||||||
|
|
||||||
let isInShadowRoot = element.getRootNode() instanceof ShadowRoot;
|
let isInShadowRoot = element.getRootNode() instanceof ShadowRoot;
|
||||||
|
|||||||
@@ -100,6 +100,10 @@ def json_to_html(element: dict, need_skyvern_attrs: bool = True) -> str:
|
|||||||
tag = element["tagName"]
|
tag = element["tagName"]
|
||||||
attributes: dict[str, Any] = copy.deepcopy(element.get("attributes", {}))
|
attributes: dict[str, Any] = copy.deepcopy(element.get("attributes", {}))
|
||||||
|
|
||||||
|
if element.get("isCheckable", False) and tag != "input":
|
||||||
|
tag = "input"
|
||||||
|
attributes["type"] = "checkbox"
|
||||||
|
|
||||||
context = skyvern_context.ensure_context()
|
context = skyvern_context.ensure_context()
|
||||||
|
|
||||||
# FIXME: Theoretically, all href links with over 69(64+1+4) length could be hashed
|
# FIXME: Theoretically, all href links with over 69(64+1+4) length could be hashed
|
||||||
|
|||||||
Reference in New Issue
Block a user