有人對我的代碼有什麼問題有任何建議嗎?下面的代碼:behat無法與隱形字段互動
echo $this->find("css","#address-container")->getHtml();
$field = $this->find("css","#address-container .region input");
echo $field->isVisible() ? "I can see myself!!!" : "no can not see";
echo $field->getAttribute('type');
$field->setValue("ON");
當我運行測試,這是結果
│ <legend>Address</legend>
│ <div class="field city">
│ <label>*City</label>
│ <input class="required city" name="address_add[0][city]" value="" type="text">
│ </div>
│ <div class="field region">
│ <label>*Prov./State</label>
│ <input class="required region" name="address_add[0][region]" value="" type="text">
│ </div>
│ <div class="field country">
│ <label>*Country</label>
│ <input class="required country" name="address_add[0][country]" value="" type="text">
│ </div>
│ no can not seetext
Element is not currently visible and so may not be interacted with
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
System info: host: 'ubuntu', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.15-x86_64-linode81', java.version: '1.8.0_121'
Driver info: driver.version: unknown (WebDriver\Exception\ElementNotVisible)
我期待的#address-container .region input
可見。當我進入我的瀏覽器並手動執行這些步驟時,我確實看到區域字段可見。我檢查了其他的事情是:
- 有頁面
- 上沒有其他區域輸入字段,如果我有城市或國家的替代區域,一切工作正常
- 有沒有延遲JavaScript調用操縱區域輸入字段
還有什麼可能導致區域字段被隱藏?有沒有更好的工具可以幫我解決這個問題?
UPDATE
如果我換了地區和國家HTML這樣的位置:
│ <div class="field country">
│ <label>*Country</label>
│ <input class="required country" name="address_add[0][country]" value="" type="text">
│ </div>
│ <div class="field region">
│ <label>*Prov./State</label>
│ <input class="required region" name="address_add[0][region]" value="" type="text">
│ </div>
然後區域變得可見。但如果改變我的代碼尋找國家,現在它是不可見的國家!
那麼看到的東西不同,我沒有看到在真正的瀏覽器?
嘗試通過在瀏覽器中檢查來查找是否返回單個元素。您可能需要添加一個等待,首先您可以使用像'sleep(2);'等盲目等待來測試,然後添加一個有條件的等待。請提供整個#地址容器表單的html代碼片段。 – lauda
謝謝勞達。我剛剛更新了我的問題。如果我顛倒了地區和國家的html節點的順序,那麼地區是可見的,而國家不是。即使當我通過我的網絡瀏覽器中的人眼看東西時,我可以看到它們都是可見的......怪異的 – John
嘗試使用如下選擇器:'#address-container input.region'或'#address-container input [name * =區域]' – lauda