【发布时间】:2021-05-06 01:26:49
【问题描述】:
我应该选择/匹配哪个元素并以编程方式在控制台中单击以显示下面的下拉菜单?
<div class="MuiGrid-root MuiGrid-item MuiGrid-grid-xs-8 MuiGrid-grid-sm-4">
<label class="jss2019 jss2020 jss2024" role="group" aria-labelledby="rate-per-acre-label">
<span class="MuiFormLabel-root jss2021 jss2028">Rate/Acre</span>
<div class="jss2027">
<div class="jss2025 jss2014">
<div class="MuiFormControl-root MuiTextField-root MuiFormControl-marginDense MuiFormControl-fullWidth" data-test="rate-value-input">
<div class="MuiInputBase-root MuiOutlinedInput-root MuiInputBase-fullWidth MuiInputBase-formControl MuiInputBase-marginDense MuiOutlinedInput-marginDense">
<input aria-invalid="false" id="rate-per-acre-left" name="rateValue" type="text" class="MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputMarginDense MuiOutlinedInput-inputMarginDense" value="0">
<fieldset aria-hidden="true" style="padding-left: 8px;" class="jss41 MuiOutlinedInput-notchedOutline">
<legend class="jss42" style="width: 0.01px;">
<span></span>
</legend>
</fieldset>
</div>
</div>
</div>
<div class="jss2026">
<div class="MuiFormControl-root MuiTextField-root MuiFormControl-marginDense MuiFormControl-fullWidth" data-test="rate-unit-dropdown">
<div class="MuiInputBase-root MuiOutlinedInput-root MuiInputBase-fullWidth MuiInputBase-formControl MuiInputBase-marginDense MuiOutlinedInput-marginDense">
<div class="MuiSelect-root MuiSelect-select MuiSelect-selectMenu MuiSelect-outlined MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputMarginDense MuiOutlinedInput-inputMarginDense" tabindex="0" role="button" aria-haspopup="listbox" aria-labelledby="rate-per-acre-right"
id="rate-per-acre-right"
>BG</div>
<input name="rateUnit" aria-hidden="true" tabindex="-1" class="MuiSelect-nativeInput" value="bg">
<svg class="MuiSvgIcon-root MuiSelect-icon MuiSelect-iconOutlined" focusable="false" viewBox="0 0 24 24" aria-hidden="true">
<path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z">
</path>
</svg>
<fieldset aria-hidden="true" style="padding-left: 8px;" class="jss41 MuiOutlinedInput-notchedOutline">
<legend class="jss42" style="width: 0.01px;">
<span></span>
</legend>
</fieldset>
</div>
</div>
</div>
</div>
</label>
</div>
我已经尝试了几个元素。但是,无法点击它。 DOM 是否需要有一个按钮元素才能点击?
这两个在 Chrome/FF 的控制台中不起作用:
$('[id="rate-per-acre-right"]').click()
$('[data-test="rate-unit-dropdown"]').click()
进一步的调查表明,尝试使用 click() 单击 SVG 元素会出现 show errors,因为 SVG 元素没有 click 方法。
附加信息
- 问题中
label元素占用的屏幕区域:https://i.stack.imgur.com/GfTVw.png - 一些与“作物和成熟度”下拉列表相关的 HTML:https://i.stack.imgur.com/NyHZC.png
- “作物和成熟度”的标签区域显示玉米为作物:https://i.stack.imgur.com/KLs3E.png
- 与裁剪和成熟度下拉菜单相关的 HTML 动画 gif。
【问题讨论】:
-
我的朋友信息太多。您将需要进行一些调试(或询问开发人员)以找出不同下拉标签容器和响应点击(或某些其他事件)的事件处理程序之间存在哪些共性并显示下拉菜单。如果没有共同点,您将需要找出每个单独的下拉菜单中哪个元素正在侦听鼠标事件。另外请不要发布代码图像。它们很难或不可能使用,就像机器生成的单行 HTML 没有换行一样。
-
如果您需要在文档中添加一个事件监听器,该监听器使用事件捕获来抓取点击事件并将其记录到控制台。单击控制台中检查的元素旁边的“事件”图标(至少在 Firefox 中)应该让您检查事件处理程序的源代码。
标签: javascript selenium-webdriver browser webdriver-io