1. 程式人生 > >selenium下拉框踩坑埋坑

selenium下拉框踩坑埋坑

本文來自網易雲社群

作者:王利蓉

最近web端全站重構,所有的頁面都大大小小都有些變動,UI就全軍覆沒了,用例從登入改,改到個人資訊頁面發現根以前的實現方式完全不一樣,這可怎麼解決

1.以前的實現(option value的對應),現在是新頁面 我就找個其他網站的參考下

b26ad583-750e-4a49-af14-61d7ce4ebb7a

<html>
    <head>
        <title>Select</title>
    </head>
    <body>
        <span>select demo</span>
        <select id = "s" name = "ns">
            <option value = "0">Op1</option>
            <option value = "1">Op2</option>
            <option value = "2">Op3</option>
            <option value = "3">Op4</option>
        </select>
    </body>
</html>

這種通過直接給value賦值即可,網上尋找解決方法也很多,指令碼實現如下:

bot.click(By.xpath("//select[@id='birth-year']/option[@value='" + year + "']"));

2.重構之後的實現,選擇時元素為隱藏狀態,選擇過程是聯動的,找不到元素 哭!!

48135863-f70b-4ac9-9355-a0a7c752afb9

860e7fdc-1d49-49ed-8fc1-c1f086257d8f?imageView&thumbnail=980x0

這種該如何解決呢?開始的時候想採用第一種方法,隱藏的那個元素直接賦值,如紅框所示,想想也是不可能的,於是就網上找解決方法,如何將隱藏的元素顯示出來,果真還真被找到了,通過js,顯示各種隱藏的元素。

js="var p=document.getElementByClassName('Select-value');p.style.display='block';"
driver.execute_script(js);
bot.click(By.xpath("//div[@aria-owns='react-select-5--list'][@aria-activedescendant='"+province+"']"));

網易雲免費體驗館,0成本體驗20+款雲產品!

更多網易研發、產品、運營經驗分享請訪問網易雲社群