2016-07-25 4 views
2

ich Selenium2TestCaseTest verwende, die here gefunden werden kann, und ich versuche, den Wert eines jquery Schieberegler zu bekommen, nachdem hier die Suche ich this LösungSelen 2 phpunit von get Wert Javascript-Code injiziert

$this->execute(
       array(
        'script' => "$('#Slider_id').slider('option', 'value', 505);", 
        'args' => array() 
        ) 
      ); 
gefunden haben

aber es erlaubt nur mir den Wert des Schiebers zu ändern, dann habe ich versucht, es ist Wert mit diesen Befehlen zu erhalten:

$this->execute(
       array( 
         'script' => "$('#Slider_id').slider('option', 'value');", 
         'args' => array() 
        ) 
       ); 

und diese:

$this->execute(
       array( 
         'script' => "$('#Slider_id').slider('value');", 
         'args' => array() 
        ) 
       ); 

und es gibt nichts zurück (NULL), kann mir bitte jemand helfen?

+0

ich es geschafft, eine Abhilfe zu erhalten, indem Sie den Schieberegler Textwert über diese Aussage bekommen: $ this-> byCssSelector ('# Nachrichten-Slider-Wert span.value ') -> Text(); aber das wollte ich nicht ... –

Antwort

1

Um den Wert zu erhalten, der von einem Code zurückgegeben wird, den Sie mit Selen in den Browser injiziert haben, müssen Sie vor dem ausgeführten Code return hinzufügen.
Dies ist relevant für jeden Javascript-Code, den Sie mit Selen ausführen, und nicht speziell auf jQuery ui Slider.

$val = $this->execute([ 
    'script' => "return $('#Slider_id').slider('option', 'value');" 
    'args' => [] 
]); 

Viel einfacher Beispiele:

$val1 = $this->execute([ 
    'script' => "return 1;" 
    'args' => [] 
]); 

$val2 = $this->execute([ 
    'script' => "return Math.max(10, 15);" 
    'args' => [] 
]); 

$val3 = $this->execute([ 
    'script' => "return function(){return 2}();" 
    'args' => [] 
]);