To jest błąd, który pojawia się, gdy próbuję uzyskać dostęp do ukrytego pola tekstowego na stronie internetowej. Poruszam się po stronie za pomocą
irb (main): 184: 0> browser.text_fields [1] .set "Hey man"
WIN32OLERuntimeError: (in OLE method "focus": )
OLE error code:800A083E in htmlfile
Can"t move focus to the control because it is invisible, not enabled, or of a type that does not accept the focus.
HRESULT error code:0x80020009
Exception occurred.
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.0.0/lib/watir-classic/input_elements.rb:294:in "method_missing"
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.0.0/lib/watir-classic/input_elements.rb:294:in "set"
from (irb):184
from C:/Ruby193/bin/irb:12:in "main>"
Z góry dziękuję!!!
Odpowiedzi:
1 dla odpowiedzi № 1Jak pracujesz z tym polem tekstowym, gdy ręcznie używasz przeglądarki?
Najpierw należy uruchomić zdarzenie, które powoduje, że pole tekstowe jest widoczne. Następnie możesz wpisać tekst w polu tekstowym za pomocą wypróbowanego kodu.
0 dla odpowiedzi nr 2
Jeśli spojrzysz na ślad, dzieje się tak, ponieważ próbujesz zaktualizować nieedytowalne lub niewidoczne pole. Jeśli używasz Watir „Classic” (tylko IE), możesz napisać:
require "watir"
.
.
.
browser.text_fields[1].value = "Hey man"
jednak jeśli używasz innej przeglądarki / sterownika, która również nie działa. W ukrytych / nieedytowalnych polach przeglądarki musisz użyć javascript:
browser.execute_script("var elem = document.getElementById("your_textfield_id"); elem.value = "Hey man";")
Irytujące, ale ma sens, ponieważ nie jest edytowalne przez użytkownika, a następnie nie można go ustawić za pomocą klawiatury.