Selenium Python使用Keys.ARROW_DOWN与手动向下箭头键不同吗?

时间:2018-06-20 08:21:06

标签: selenium selenium-webdriver qa

假设我要从月份列表中选择“五月”,这是我运行的代码:

while expirymth.text != expiry_mth:
   actions.send_keys(Keys.ARROW_DOWN)
   sleep(0.5)   
   actions.perform()
   print(expirymth.text)

但奇怪的是我得到

Month #the starting value of the dropdown list
March
July
December
December
December
December
December
...

(由于那是最后一个月,因此它会在12月卡住,并且未达到“ 5月”。

但是,当我手动按下向下箭头键时,它通常逐月下降。睡眠,甚至尝试过睡眠(2),都无济于事。我也尝试过只运行一次(作为if函数),但我仍然可以立即获得March。

有人知道为什么以及如何解决这个问题吗?

相关的HTML代码:

function body_onLoad() {
            //                        document.getElementById("card_type").style.display = "none";
            //                        document.getElementById("expiryMonth").style.display = "none";
            //                        document.getElementById("expiryYear").style.display = "none";
            //                        document.getElementById("paymentDescription").style.display = "none";
            refreshAmount();
        }
<tr style="padding:0; border:1px;">
                        <th align="left">Expiry date</th>
                        <td style="padding:0; border:1px; ">
                            <select name="mm" class="required" id="expiryMonth" style="width:160px;font-size:11px;">
                                <option value="">Month</option>
                                <option value="01"  >January</option>
                                <option value="02" >February</option>
                                <option value="03" >March</option>
                                <option value="04" >April</option>
                                <option value="05" >May</option>
                                <option value="06" >June</option>
                                <option value="07" >July</option>
                                <option value="08" >August</option>
                                <option value="09" >September</option>
                                <option value="10" >October</option>
                                <option value="11" >November</option>
                                <option value="12" >December</option>
                            </select>
                        </td>
<a class="ui-selectmenu ui-widget ui-state-default required ui-selectmenu-dropdown ui-selectmenu-focus ui-state-hover ui-corner-all" id="expiryMonth_button_881" role="button" href="#" aria-haspopup="true" aria-owns="expiryMonth_menu_881" aria-expanded="false" tabindex="0" style="width: 131px;"><span class="ui-selectmenu-status">Month</span><span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span></a>

<span class="ui-selectmenu-status">Month</span>
<span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span>

非常抱歉,代码格式不正确,我避免放置HTML代码,因为我无法从页面源代码中复制代码,这里的代码有点混乱。从<a class="ui-selectmenu开始,它取自Web开发人员工具的“元素”部分,而在页面源中看不到。

1 个答案:

答案 0 :(得分:0)

您可以使用select_by_index而不是操作键来选择它。因此,您必须选择索引为5的May,

<div *ngFor="let image of campaign.images; let i = index;">
    <a [href]="image.web_url" target="_blank">
        <img src="{{ image.web_url }}?width=100&height=100">
    </a>
</div>