使用 CodeCeption 测试脚本从 jQuery Chosen Dropdown 中选择一个值

Selecting a value from jQuery Chosen Dropdown using CodeCeption test script

你好,我正在尝试使用 codeception 脚本从 jQuery Chosed Dropdown 中选取一个值,以下是开发代码

<div class="chosen-container chosen-container-single chosen-container-active" style="width: inherit;" title="" id="Merchantserviceproviders_country_chosen">
<a tabindex="-1" class="chosen-single"><span>United States</span><div><b></b></div></a>
<div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off"></div>
<ul class="chosen-results">
<li class="active-result" style="" data-option-array-index="0">Please select country</li>
<li class="active-result" style="" data-option-array-index="1">United States</li>
<li class="active-result" style="" data-option-array-index="2">Canada</li>
<li class="active-result" style="" data-option-array-index="3">United Kingdom</li>
<li class="active-result" style="" data-option-array-index="4">Ireland</li>
<li class="active-result" style="" data-option-array-index="5">South Africa</li>
<li class="active-result" style="" data-option-array-index="6">Turkey</li></ul></div></div>                                    
<span class="note"><div style="display:none" id="Merchantserviceproviders_country_em_" class="errorMessage"></div></span></div>

尽管我可以通过以下方式使用 xpath select 它;(在这种情况下为美国)

$I->click(['css' => 'div#Merchantserviceproviders_country_chosen']);
$I->click(['xpath' => '//div[@id="Merchantserviceproviders_country_chosen"]/div/ul/li[2]']);

但问题是 selection 是通过值在列表中的位置,所以如果有任何新值(添加国家/地区)我将无法 select 它直到我知道它的位置。

我想知道我如何才能 select 这个国家使用它的价值(在我的例子中是美国)而不是列表中的位置。

在这种情况下使用 selectOption

$I->selectOption('dropdown-locator', 'option');

示例:

$I->selectOption('div#Merchantserviceproviders_country_chosen', 'United States');

好吧,我现在想出了以下解决方法,这对我来说似乎是一个更好的选择,

$I->click(['css' => 'div#Merchantserviceproviders_country_chosen']);
$I->fillField(['xpath' => '//div[@id="Merchantserviceproviders_country_chosen"]/div/div/input'], 'United States'); 
$I->click(['xpath' => '//div[@id="Merchantserviceproviders_country_chosen"]/div/ul/li[1]']);

在第 1 行,我点击了下拉菜单,在第 2 行,我输入了我想要的国家全名来缩小结果范围(记住它是一个带有搜索功能的下拉菜单),,,在第 3 行,我点击了下拉列表显示搜索结果后的第一个选项