我正在用Java开发剧作家,并尝试应用于包含隐藏选择的网站,我尝试使用selectOption为其设置值,但没有成功。
错误消息告诉我,select 是隐藏的,所以我无法处理,我也无法处理这个 select 或删除隐藏属性!
隐藏的原因是,网站使用react,它只显示一个视图选择的div
我所从事的部分内容是:
<div class="form-control ui fluid selection dropdown" tabindex="0" aria-invalid="false">
<select aria-required="true" id="e0op7pe-natId" lang="ar" class="form-control choices__input" type="text" name="data[info][natId]" ref="selectContainer" dir="rtl" hidden="" tabindex="-1" data-choice="active">
</select>
<div class="choices__list choices__list--single">
</div>
</div>
<div class="choices__list choices__list--dropdown" aria-expanded="false">
<input type="text" name="search_terms" class="choices__input choices__input--cloned" autocomplete="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" aria-label="false" placeholder="اكتب للبحث">
<div class="choices__list" role="listbox">
<div class="choices__item choices__item--choice has-no-choices">لا توجد خيارات للاختيار من بينها</div>
</div>
</div>
我已经尝试了很多,这是我尝试过的一些:
1)
ElementHandle natId = page.querySelector("select[name='data[info][natId]']");
natId.selectOption("194");
2)
page.locator("select[name='data[info][natId]']").selectOption("194");
3)
page.locator("div[class='form-group has-feedback formio-component formio-component-select formio-component-natId required']").click();
page.locator("select[name='data[info][natId]']").selectOption("194");
4)
page.locator("div[class='form-group has-feedback formio-component formio-component-select formio-component-natId required']").click();
page.evaluate("document.querySelector(\"select[name='data[info][natId]']\").hidden = 'false';");
page.locator("select[name='data[info][natId]']").selectOption("194");
5)
page.locator("div[class='form-group has-feedback formio-component formio-component-select formio-component-natId required']").click();
page.evaluate("document.querySelector(\"select[name='data[info][natId]']\").removeAttribute('Hidden');");
page.locator("select[name='data[info][natId]']").selectOption("194");
6)
page.locator("div[class='form-group has-feedback formio-component formio-component-select formio-component-natId required']").click();
page.evaluate("document.querySelector(\"select[name='data[info][natId]']\").style.display = 'block';");
page.locator("select[name='data[info][natId]']").selectOption("194");
这 6 种方式都没有成功运行或允许我设置选择值。
您可以使用
force
选项绕过可操作性检查。
page.selectOption(
"select[name='data[info][natId]']",
"194",
new Page.SelectOptionOptions().setForce(true));