开发者

javascript in select in selenium

I'm trying set item in select using javascript (in variable I have date)

Here is how I'm trying set this item

<tr>
    <td>select</td>
    <开发者_高级运维td>Recent-Year</td>
    <td>value=javascript{d=new Date();d.getYear()}</td>
</tr>

I get:

[error] Option with value 'javascript{d=new Date();d.getYear()}' not found 

of cource when I'm trying by this:

<tr>
    <td>select</td>
    <td>Recent-Year</td>
    <td>value=2011</td>
</tr>

it works.

What I must to change in this code to set this item?

EDIT

I don't want to split this command into few commands, because in another testcase I have stored variable birthday

<tr>
    <td>storeEval</td>
    <td>new Date('1966,09,16')</td>
    <td>dateOfBirth</td>
</tr>

and I have 3 selects : Birth-Day, Birth-Month and Birth-Yearand I don't want to create 3 variables.

I want to set items in select like this:

    <tr>
        <td>select</td>
        <td>Birth-Year</td>
        <td>value =${dateOfBirth.getFullYear()}</td>
    </tr>


Store the JavaScript evaluation first (using storeEval) and then use this variable as your option value:

<tr>
  <td>storeEval</td>
  <td>new Date().getYear()</td>
  <td>varYear</td>
</tr>
<tr>
    <td>select</td>
    <td>Recent-Year</td>
    <td>value=${varYear}</td>
</tr>

That should work


Update: In response to your edit: you can't use the value= with JavaScript but you can use the storedVars variable available in the JavaScript environment to create all the variables you need. For example, storedVars['myVar'] can be accessed directly through Selenium as ${myVar}. Below, I use verifyEval to run some JavaScript that will create all the variables I need.

<tr>
    <td>storeEval</td>
    <td>new Date()</td>
    <td>myDate</td>
</tr>
<tr>
    <td>verifyEval</td>
    <td>var date=storedVars['myDate']; storedVars['day']=date.getDate(); storedVars['month']=date.getMonth(); storedVars['year']=date.getFullYear();</td>
    <td></td>
</tr>

Then you can select the options based on:

<tr>
    <td>select</td>
    <td>Birth-Day</td>
    <td>value=${day}</td>
</tr>
<tr>
    <td>select</td>
    <td>Birth-Month</td>
    <td>value=${month}</td>
</tr>
<tr>
    <td>select</td>
    <td>Birth-Year</td>
    <td>value=${year}</td>
</tr>

I know it's not the ideal solution, but it does help a bit since you can't do value=javascript{...} (not that I know of anyway but if anyone else knows otherwise then please say).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜