无法访问文本字段 - watir
Unable to access text field - watir
我在结帐页面的最后一页。当我稍后加载结帐页面时,将出现允许用户输入信用卡信息的字段。据我所知,信用卡字段是由信用卡公司注入到页面中的。
付款部分的代码如下所示:
<div id="block-system-main" class="block block-system block-main block-system-main even block-without-title">
<div class="content clearfix">
<form id="lb-booking-booking-alt-payment" class="booking-form jquery-once-1-processed" accept-charset="UTF-8" method="post" action="/booking/payment">
<div>
<div id="lb-card-options">
<fieldset id="edit-payment-detail" class="form-wrapper">
<legend>
<div class="fieldset-wrapper">
<div id="edit-payment-details-amount-to-pay" class="form-item form-type-yachts-item">
<div id="edit-payment-details-wrapper-payment-iframe" class="lb-booking-payment-iframe-wrapper form-wrapper">
<iframe class="lb-booking-payment-iframe payment_iframe-processed" width="100%" src="https://testing.datapayment.com/hps/?HPS_SessionID=0c2181c579-d532a6-4217a-929a-e59562af8474ea09" style="height: 388px;">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html class="mti-inactive" lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<body leftmargin="0" topmargin="0">
<form class="payment-form" autocomplete="off" method="post" action="?">
<div class="gateway-form clearfix three-column-with-button">
<div class="form-fields form-wrapper clearfix">
<div class="form-item form-type-textfield">
<label for="card_number">
<input id="card_number" class="form-text required" type="text" maxlength="23" size="26" name="card_number">
</div>
我正在尝试访问最后几行,即 "card_number" 字段,以便我可以在其中输入抄送信息。知道我该怎么做吗?我尝试了以下代码片段但出现错误
b.text_field(:id => 'card_number').set '9999999999'
unable to locate element, using {:id=>"card_number", :tag_name=>"input or textarea", :type=>"(any text type)"} (Watir::Exception::UnknownObjectException)
您不能像访问其他字段一样直接访问 iframe 中的字段,您需要先访问 iframe 的范围:
b.iframe(class: "lb-booking-payment-iframe").text_field(id: 'card_number').set '999999999'
从提供的 HTML 来看,该元素似乎在 iframe
中。您需要指定:
b.iframe(:class => "lb-booking-payment-iframe payment_iframe-processed").text_field(:id => 'card_number').set '9999999999'
我在结帐页面的最后一页。当我稍后加载结帐页面时,将出现允许用户输入信用卡信息的字段。据我所知,信用卡字段是由信用卡公司注入到页面中的。
付款部分的代码如下所示:
<div id="block-system-main" class="block block-system block-main block-system-main even block-without-title">
<div class="content clearfix">
<form id="lb-booking-booking-alt-payment" class="booking-form jquery-once-1-processed" accept-charset="UTF-8" method="post" action="/booking/payment">
<div>
<div id="lb-card-options">
<fieldset id="edit-payment-detail" class="form-wrapper">
<legend>
<div class="fieldset-wrapper">
<div id="edit-payment-details-amount-to-pay" class="form-item form-type-yachts-item">
<div id="edit-payment-details-wrapper-payment-iframe" class="lb-booking-payment-iframe-wrapper form-wrapper">
<iframe class="lb-booking-payment-iframe payment_iframe-processed" width="100%" src="https://testing.datapayment.com/hps/?HPS_SessionID=0c2181c579-d532a6-4217a-929a-e59562af8474ea09" style="height: 388px;">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html class="mti-inactive" lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<body leftmargin="0" topmargin="0">
<form class="payment-form" autocomplete="off" method="post" action="?">
<div class="gateway-form clearfix three-column-with-button">
<div class="form-fields form-wrapper clearfix">
<div class="form-item form-type-textfield">
<label for="card_number">
<input id="card_number" class="form-text required" type="text" maxlength="23" size="26" name="card_number">
</div>
我正在尝试访问最后几行,即 "card_number" 字段,以便我可以在其中输入抄送信息。知道我该怎么做吗?我尝试了以下代码片段但出现错误
b.text_field(:id => 'card_number').set '9999999999'
unable to locate element, using {:id=>"card_number", :tag_name=>"input or textarea", :type=>"(any text type)"} (Watir::Exception::UnknownObjectException)
您不能像访问其他字段一样直接访问 iframe 中的字段,您需要先访问 iframe 的范围:
b.iframe(class: "lb-booking-payment-iframe").text_field(id: 'card_number').set '999999999'
从提供的 HTML 来看,该元素似乎在 iframe
中。您需要指定:
b.iframe(:class => "lb-booking-payment-iframe payment_iframe-processed").text_field(:id => 'card_number').set '9999999999'