【发布时间】:2018-11-24 18:44:52
【问题描述】:
我正在尝试从下拉列表中选择一个值,但是当我尝试选择它时,我收到了对象不在视图中的错误。同一页面上的所有其他字段都可以填写,只是下拉菜单给我带来了问题。
代码:
driver.FindElementById("amount").SendKeys(amount);
var element = driver.FindElementById("dial-code");
element.SendKeys(Keys.Backspace + Keys.Backspace + cc);
driver.FindElementById("displayed-phone").SendKeys(number);
driver.FindElementById("message").SendKeys("Payment for " + code);
driver.FindElementById("currency").Click();
其中货币是下拉菜单的 ID。
HTML:
<select id="currency" class="form-select form-medium" name="currency" rel="tooltip" title="" data-original-title="Select currency" aria-invalid="false">
<option data-min="0.1" data-max="2000" data-precision="2" value="EUR">
EUR</option>
<option data-min="0.11" data-max="2267.9" data-precision="2" value="USD">
USD</option>
<option data-min="0.43" data-max="8586.52" data-precision="2" value="PLN">
PLN</option>
<option data-min="4.26" data-max="85191.21" data-precision="2" value="ARS">
ARS</option>
<option data-min="0.09" data-max="1769.03" data-precision="2" value="GBP">
GBP</option>
<option data-min="0.15" data-max="3001.83" data-precision="2" value="CAD">
CAD</option>
<option data-min="0.47" data-max="9321.04" data-precision="2" value="RON">
RON</option>
<option data-min="0.16" data-max="3135.05" data-precision="2" value="AUD">
AUD</option>
<option data-min="2.59" data-max="51860.98" data-precision="2" value="CZK">
CZK</option>
<option data-min="129" data-max="2571679" data-precision="0" value="KRW">
KRW</option>
<option data-min="77" data-max="1530190" data-precision="0" value="CLP">
CLP</option>
<option data-min="13" data-max="256158" data-precision="0" value="JPY">
JPY</option>
<option data-min="0.43" data-max="8684.11" data-precision="2" value="BRL">
BRL</option>
<option data-min="0.6" data-max="11991.5" data-precision="2" value="TRY">
TRY</option>
<option data-min="8.01" data-max="160286.6" data-precision="2" value="INR">
INR</option>
<option data-min="7.51" data-max="150163" data-precision="2" value="RUB">
RUB</option>
<option data-min="32.26" data-max="645136.78" data-precision="2" value="HUF">
HUF</option>
<option data-min="0.17" data-max="3342.54" data-precision="2" value="NZD">
NZD</option>
<option data-min="0.79" data-max="15758.7" data-precision="2" value="CNY">
CNY</option>
<option data-min="0.11" data-max="2262.06" data-precision="2" value="CHF">
CHF</option>
<option data-min="3.75" data-max="75023.1" data-precision="2" value="THB">
THB</option>
<option data-min="2.31" data-max="46292.05" data-precision="2" value="MXN">
MXN</option>
<option data-min="1.03" data-max="20619.2" data-precision="2" value="SEK">
SEK</option>
<option data-min="0.75" data-max="14927.74" data-precision="2" value="DKK">
DKK</option>
<option data-min="361.82" data-max="7236419.13" data-precision="2" value="COP">
COP</option>
<option data-min="0.97" data-max="19492.9" data-precision="2" value="NOK">
NOK</option>
<option data-min="0.43" data-max="8509.14" data-precision="2" value="SAR">
SAR</option>
<option data-min="2638" data-max="52752181" data-precision="0" value="VND">
VND</option>
<option data-min="0.16" data-max="3119.04" data-precision="2" value="SGD">
SGD</option>
<option data-min="3.51" data-max="70182.28" data-precision="2" value="TWD">
TWD</option>
<option data-min="0.42" data-max="8330.02" data-precision="2" value="AED">
AED</option>
<option data-min="1.57" data-max="31426.7" data-precision="2" value="ZAR">
ZAR</option>
<option data-min="5.94" data-max="118835.44" data-precision="2" value="PHP">
PHP</option>
<option data-min="0.38" data-max="7658.68" data-precision="2" value="PEN">
PEN</option>
<option data-min="2.03" data-max="40577.18" data-precision="2" value="EGP">
EGP</option>
<option data-min="0.89" data-max="17747.98" data-precision="2" value="HKD">
HKD</option>
<option data-min="0.03" data-max="689.81" data-precision="3" value="KWD">
KWD</option>
<option data-min="0.08" data-max="1609.09" data-precision="3" value="JOD">
JOD</option>
<option data-min="0.11" data-max="2267.9" data-precision="2" value="PAB">
PAB</option>
<option data-min="0.48" data-max="9519.37" data-precision="2" value="MYR">
MYR</option>
</select><button class="select-button form-medium valid" type="button"><span>
USD</span><svg class="icon icon-arrow_down-dims"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-arrow_down"></use></svg></button><div class="options"><div class="option" data-value="EUR">
EUR</div><div class="option selected" data-value="USD">
USD</div><div class="option" data-value="PLN">
PLN</div><div class="option" data-value="ARS">
ARS</div><div class="option" data-value="GBP">
GBP</div><div class="option" data-value="CAD">
CAD</div><div class="option" data-value="RON">
RON</div><div class="option" data-value="AUD">
AUD</div><div class="option" data-value="CZK">
CZK</div><div class="option" data-value="KRW">
KRW</div><div class="option" data-value="CLP">
CLP</div><div class="option" data-value="JPY">
JPY</div><div class="option" data-value="BRL">
BRL</div><div class="option" data-value="TRY">
TRY</div><div class="option" data-value="INR">
INR</div><div class="option" data-value="RUB">
RUB</div><div class="option" data-value="HUF">
HUF</div><div class="option" data-value="NZD">
NZD</div><div class="option" data-value="CNY">
CNY</div><div class="option" data-value="CHF">
CHF</div><div class="option" data-value="THB">
THB</div><div class="option" data-value="MXN">
MXN</div><div class="option" data-value="SEK">
SEK</div><div class="option" data-value="DKK">
DKK</div><div class="option" data-value="COP">
COP</div><div class="option" data-value="NOK">
NOK</div><div class="option" data-value="SAR">
SAR</div><div class="option" data-value="VND">
VND</div><div class="option" data-value="SGD">
SGD</div><div class="option" data-value="TWD">
TWD</div><div class="option" data-value="AED">
AED</div><div class="option" data-value="ZAR">
ZAR</div><div class="option" data-value="PHP">
PHP</div><div class="option" data-value="PEN">
PEN</div><div class="option" data-value="EGP">
EGP</div><div class="option" data-value="HKD">
HKD</div><div class="option" data-value="KWD">
KWD</div><div class="option" data-value="JOD">
JOD</div><div class="option" data-value="PAB">
PAB</div><div class="option" data-value="MYR">
MYR</div></div></div>
</div>
</div>
<div class="form-group">
<label for="phone">Request money from</label>
<div class="form-control-input">
<div id="phone" class="input-group input-group-medium input-group-phone small-group">
<div class="input-group-addon flag">
<img class="flag-icon" src="/img/flags/svg/NL.svg">
</div>
<input type="text" name="dialCode" id="dial-code" value="31" class="form-control input-group-code dirty valid" autocomplete="off" maxlength="4">
<input type="tel" name="phoneNumber" id="displayed-phone" class="form-control input-group-number error" placeholder="Type phone number" autocomplete="off" maxlength="16" aria-describedby="displayed-phone-error">
</div>
</div>
<div id="displayed-phone-error" class="error form-control-error">Phone number is required.</div></div>
<div class="form-group">
<label for="message">Message</label>
<div class="form-control-input">
<textarea id="message" name="message" class="form-control form-medium error" aria-describedby="message-error" aria-invalid="true"></textarea>
</div>
<div id="message-error" class="error form-control-error">Message is required.</div></div>
<input type="hidden" class="csrf" name="L1T9b7fT5g14JGEc" value="74bdb290ff621f31c284b88e26e380a9">
<div class="form-group">
<button type="submit" class="btn btn-primary">Send request</button>
</div>
</form>
我已经尝试使用一个动作向下滚动,但问题似乎是下拉菜单很长。这会导致问题,因为我无法再从下拉列表中进行选择。
还尝试使用 Javascript 更改下拉列表的值,但这也不起作用:
driver.ExecuteScript("document.getElementById('currency').value = 'USD';");
【问题讨论】: