2

I have two drop downs on a page. I need to verify that the item in drop down list 1 has a class of "selected" added to it when the item in drop down list 2 has been selected. Drop down list 1 has more than 3 options in it but I wanted to save space in the post. The first chunk of steps gets the values for all the items in the list and randomly selects one.

The second portion uses the value that was randomly selected in the first few steps to target the option and see check for the selected class to be true.

Here is the HTML:

<ol>
     <li class="select input required" id="message_recipient_input">
          <select id="message_recipient_id">
               <option value></option>
               <option value="1">Smith, Bob</option>
               <option value="2">Smith, Steve</option>
               <option value="3">Smith, Joe</option> 
          </select>
     </li>
</ol>

<ol>
     <li class="select input required" id="message_template_input">
          <select id="message_template_id">
               <option value></option>
               <option value="9">Message Template</option>
               <option value="10">Survey Template</option>
               <option value="11">Coupon Template</option> 
          </select>
     </li>
</ol> 

Here are the steps in RF:

${RecipientCount}=      Get Matching Xpath Count        xpath=//*[@id="message_recipient_id"]/option
Log                     ${RecipientCount}
@{ValueList}=           Create List
: FOR       ${INDEX}    IN RANGE       1            ${RecipientCount}
\       ${recipient_value}=        Get Element Attribute    xpath=//*[@id="message_recipient_id"]/option[contains(text(), '@')] [${INDEX}]@value
\       Log                        ${recipient_value}
\       Append To List             ${ValueList}             ${recipient_value}
Log                     ${ValueList}
${recipient}=           Evaluate            random.choice(${ValueList})       random
Log                     ${recipient}
Sleep                   2s
Select From List        id=message_recipient_id       ${recipient}
Sleep                   2s

${message_template_dropdown}=   Select From List By Value       id=message_template_id          9
Sleep                           2s
${selected_recipient}=          Get Element Attribute           xpath=//option[@value=${recipient}] @selected
Log                             ${selected_recipient}
Should Contain                  ${selected_recipient}           true

This works fine in Chrome and Firefox on Mac OS X but Safari isn't selecting any of the items in the lists. The steps pass as if it is selecting them but fails on the "Should Contain" step because ${selected_recipient} has None for the selected class.

Chris
  • 41
  • 3
  • Which webdriver and version are you using for Safari? – A. Kootstra Jun 04 '17 at 09:47
  • @A.Kootstra Thanks for your reply. I am running version 3.4.1 for Webdriver. Is there a separate command to find the Webdriver version for Safari? My Safari browser version is 10.1 on Mac OS Sierra 10.12.4 – Chris Jun 06 '17 at 17:00
  • Typically its done by using the --help argument or --version. Not sure if this is indeed supported by SafariDriver. – A. Kootstra Jun 06 '17 at 19:37

0 Answers0