在选择框中更改选定的值

5

我目前遇到了更改下拉列表值的问题。我正在https://www.reebok.com/us/cart上将一个项目添加到购物车中,我试图更改数量。

我正在尝试将我的Java代码重写为JavaScript代码。如此说来。

Select select = new Select(driver.findElement(By.xpath("//* [@id=\"app\"]/div/div/div/div/div[2]/div/main/div[1]/div/div/div/div/div/div[2]/div[2]/div[2]/div/div/select")));
select.selectByVisibleText(5);

目前我使用 Selenium 库在 Java 中运行良好。但在 JavaScript 中,我很难模仿相同的步骤。我已经尝试了所有方法。

编辑:我已经尝试过:

var select= document.evaluate('//*[@id="app"]/div/div/div/div/div[2]/div/main/div[1]/div/div/div/div/div/div[2]/div[2]/div[2]/div/div/select', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
select.selectedIndex=7;

并且

document.getElementsByClassName('gl-dropdown-native__select-element')[0].value=7;

你具体使用的是什么?请分享你的代码,说明它没有按预期工作。 - GalAbra
设置value将不起作用 - 您必须设置selectedIndex - IVO GELOV
你也必须触发事件。我似乎无法弄清楚它正在侦听哪个事件。因此,在执行.value = 6;之后,您需要执行.dispatchEvent(new Event('change'));但是我无法弄清楚它正在侦听哪个事件。我甚至尝试了'click',但没有成功...但是当我显示隐藏的选择下拉菜单时,我可以看到值正在更改。只是它没有触发变化 :/ - Dexterians
是的,我猜Java的selectByVisibleText()方法会自动执行这个操作? - JustinJ72
@Drag13 对我仍然不起作用。我初始化了选择,然后执行了 select.selectedIndex=7;,然后使用了你的代码,但仍然不起作用。 - JustinJ72
显示剩余8条评论
1个回答

1
这是更改购物篮中商品的工作函数。问题在于找到它们依赖的处理程序和事件类型。它们依赖于窗口上的mouseup事件。
function changeItemTo(itermNumber) {
    const itemsSelector = '.gl-dropdown-custom__options button';
    const itemsElements = document.querySelectorAll(itemsSelector);
    if (itemsElements == null) throw new Error(`Selector ${itemsSelector} is wrong, nothing found`);
    const buttonForItem = itemsElements[itermNumber];
    if (buttonForItem == null) throw new Error(`Item with index: ${itermNumber} not found`);

    buttonForItem.dispatchEvent(new Event('mouseup', { bubbles: true, cancelable: true, }));
}

希望这有所帮助!

仍然无法工作。 我在Reebok网站上尝试更改购物车中项目的数量。 我编辑了类以反映Reebok网站上的选择元素。 const select = document.querySelector('.gl-dropdown-custom__select-element'); select.selectedIndex = 2; select.dispatchEvent(new Event('change')); - JustinJ72
还有一个问题,你是怎么发现它依赖于 mouseup 的? - JustinJ72
实际上,通过艰苦的调试,我发现点击事件被忽略了,并查看应用程序代码。幸运的是,他们非常慷慨地提供了映射文件,因此不需要花费太多时间。 - Drag13
你可以在哪里找到地图文件? - JustinJ72
这是c.go-mpulse.net的网址吗? - JustinJ72
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接