Reputation: 149
I am trying to select an option from a dropdown which in a form in web page with Selenium webdriver using VBA. There are 8 checkbox each checkbox gives 2 or 3 dropdown to select, Checkbox 3 and 4 has the same option so I am unable to select the 2nd option in 4th checkbox.
bot.FindElementsByCss(".bs-FilterControl-item-checkbox")(4).Click ' to select 4th checkbox it works
bot.FindElementByXPath("//*[@value='false']").Click ' this code selects the 2nd option in the 3rd checkbox
so i tried the below code it results as NoSuchElementError :
bot.FindElementByXPath("//*[@value='false'][2]").Click
Here is the complete HTML code of form:
<form>
<div class="bs-FilterControl-flyout">
<div class="bs-FilterControl-flyout-inner">
<div class="bs-FilterControl-flyout-gradient"></div>
<div class="bs-FilterControl-flyout-contents">
<div class="bs-FilterControl-flyout-header"><button class="Button bs-ButtonLegacy Flex-flex" type="button" href=""><div class="Button-fill bs-ButtonLegacy-fill Box-root Box-background--white Padding-horizontal--8 Padding-vertical--4 Flex-flex Flex-alignItems--baseline Flex-direction--row" style="position: relative;"><div class="TextAligner" style="line-height: 16px; font-size: 13px; flex: 0 0 auto;"></div><div class="Box-root Flex-flex Flex-alignItems--baseline Flex-direction--row Flex-justifyContent--flexStart" style="flex: 1 1 auto; line-height: 0;"><span class="Button-label Text-color--default Text-fontSize--13 Text-fontWeight--medium Text-lineHeight--16 Text-typeface--base Text-wrap--noWrap Text-display--block" style="margin-top: -1px; transform: translateY(0.5px);"><span>Clear</span></span></div></div></button>
<h2><span>Filters</span></h2><button class="Button bs-ButtonLegacy Button--color Button--color--blue Flex-flex" type="submit" href=""><div class="Button-fill bs-ButtonLegacy-fill Box-root Box-background--blue Padding-horizontal--8 Padding-vertical--4 Flex-flex Flex-alignItems--baseline Flex-direction--row" style="position: relative;"><div class="TextAligner" style="line-height: 16px; font-size: 13px; flex: 0 0 auto;"></div><div class="Box-root Flex-flex Flex-alignItems--baseline Flex-direction--row Flex-justifyContent--flexStart" style="flex: 1 1 auto; line-height: 0;"><span class="Button-label Text-color--white Text-fontSize--13 Text-fontWeight--medium Text-lineHeight--16 Text-typeface--base Text-wrap--noWrap Text-display--block" style="margin-top: -1px; transform: translateY(0.5px);"><span>Done</span></span></div></div></button></div>
<div
class="bs-FilterControl-list">
<div class=""><label class="bs-FilterControl-item-label"><input class="bs-FilterControl-item-checkbox" type="checkbox" value="created"><span>Date</span></label>
<div class="bs-FilterControl-item-content">
<div class="bs-FilterControl-item-children">
<select>
<option value="inTheLast">is in the last</option>
<option value="equals">is equal to</option>
<option value="between">is between</option>
<option value="isOnOrAfter">is on or after</option>
<option value="isBefore">is before</option>
<option value="isBeforeOrOn">is before or on</option>
</select>
<div class="bs-FilterControl-input-container">
<div class="bs-FilterControl-inTheLast-container"><span><input class="bs-FilterControl-textInput" type="text" value=""></span>
<select class="bs-FilterControl-unitSelect">
<option value="days">days</option>
<option value="months">months</option>
</select>
</div>
</div>
<div class="bs-FilterControl-timezone">
<div class="Box-root">
<div class="Box-root Flex-flex Flex-alignItems--center Flex-direction--row Flex-justifyContent--flexStart" style="margin-left: -8px;">
<div class="Box-root Box-hideIfEmpty Margin-left--8">
<div class="bs-FilterControl-timezoneLabel"><span>Timezone:</span></div>
</div>
<div class="Box-root Box-hideIfEmpty Margin-left--8"><label class="Radio bs-FilterControl-timezoneRadio" for="radio46"><input title="CST/CDT - Chicago" class="Radio-source" id="radio46" type="radio"><div class="Radio-box Box-root Flex-flex Flex-alignItems--center" style="height: 20px;"><div class="Radio-target Box-root Box-background--blue"><div class="Radio-dot Box-root Box-background--white"></div></div></div><div class="Radio-copy Box-root Margin-left--8"><span class="Text-color--default Text-fontSize--14 Text-fontWeight--medium Text-lineHeight--20 Text-typeface--base Text-wrap--wrap Text-display--block">CST/CDT</span></div></label></div>
<div
class="Box-root Box-hideIfEmpty Margin-left--8"><label class="Radio bs-FilterControl-timezoneRadio" for="radio47"><input title="UTC - UTC" class="Radio-source" id="radio47" type="radio"><div class="Radio-box Box-root Flex-flex Flex-alignItems--center" style="height: 20px;"><div class="Radio-target Box-root Box-background--white"><div class="Radio-dot Box-root"></div></div></div><div class="Radio-copy Box-root Margin-left--8"><span class="Text-color--default Text-fontSize--14 Text-fontWeight--medium Text-lineHeight--20 Text-typeface--base Text-wrap--wrap Text-display--block">UTC</span></div></label></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class=""><label class="bs-FilterControl-item-label"><input class="bs-FilterControl-item-checkbox" type="checkbox" value="amount"><span>Amount</span></label>
<div class="bs-FilterControl-item-content">
<div class="bs-FilterControl-item-children">
<select>
<option value="equals">is equal to</option>
<option value="between">is between</option>
<option value="greaterThan">is greater than</option>
<option value="lessThan">is less than</option>
</select>
<div class="bs-FilterControl-input-container"><span> </span><span><input class="bs-FilterControl-textInput" type="text" value=""></span></div>
</div>
</div>
</div>
<div class="bs-FilterControl-item--expanded"><label class="bs-FilterControl-item-label"><input class="bs-FilterControl-item-checkbox" type="checkbox" value="paid"><span>Status</span></label>
<div class="bs-FilterControl-item-content">
<div class="bs-FilterControl-item-children">
<select>
<option value="true">is successful</option>
<option value="false">is failed</option>
<option value="pending">is pending</option>
</select>
</div>
</div>
</div>
<div class="bs-FilterControl-item--expanded"><label class="bs-FilterControl-item-label"><input class="bs-FilterControl-item-checkbox" type="checkbox" value="refunded"><span>Refunded</span></label>
<div class="bs-FilterControl-item-content">
<div class="bs-FilterControl-item-children">
<select>
<option value="true">is fully refunded</option>
<option value="false">is not refunded</option>
<option value="partial">is partially refunded</option>
</select>
</div>
</div>
</div>
<div class=""><label class="bs-FilterControl-item-label"><input class="bs-FilterControl-item-checkbox" type="checkbox" value="captured"><span>Captured</span></label>
<div class="bs-FilterControl-item-content">
<div class="bs-FilterControl-item-children">
<select>
<option value="true">has been captured</option>
<option value="false">has not been captured</option>
</select>
</div>
</div>
</div>
<div class=""><label class="bs-FilterControl-item-label"><input class="bs-FilterControl-item-checkbox" type="checkbox" value="disputed"><span>Disputed</span></label>
<div class="bs-FilterControl-item-content">
<div class="bs-FilterControl-item-children">
<select>
<option value="true">is disputed</option>
<option value="false">is not disputed</option>
</select>
</div>
</div>
</div>
<div class=""><label class="bs-FilterControl-item-label"><input class="bs-FilterControl-item-checkbox" type="checkbox" value="source"><span>Payment source</span></label>
<div class="bs-FilterControl-item-content">
<div class="bs-FilterControl-item-children">
<select>
<option value="card">Card</option>
<option value="bank_account">Bank Account</option>
<option value="ach_credit_transfer">ACH Credit Transfer</option>
<option value="ach_debit">ACH Debit</option>
<option value="alipay">Alipay</option>
<option value="bancontact">Bancontact</option>
<option value="eps">EPS</option>
<option value="giropay">Giropay</option>
<option value="ideal">iDEAL</option>
<option value="multibanco">Multibanco</option>
<option value="p24">P24</option>
<option value="sofort">SOFORT</option>
<option value="three_d_secure">3D Secure</option>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
Upvotes: 2
Views: 1313
Reputation: 84465
Try
bot.FindElementByXPath("//*[text()='is not refunded']").Click
It matches the element on the desired text of the drop down option.
Upvotes: 2