有没有办法在Java中使用playwright设置隐藏选择的值?

问题描述 投票:0回答:1

我正在用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 种方式都没有成功运行或允许我设置选择值。

java reactjs select playwright hidden
1个回答
0
投票

您可以使用

force
选项绕过可操作性检查。

page.selectOption(
    "select[name='data[info][natId]']",
    "194", 
    new Page.SelectOptionOptions().setForce(true));
© www.soinside.com 2019 - 2024. All rights reserved.