需求:需要從文件中讀取參數,然后添加到xpath中,根據傳入的參數執行相應的操作點擊,如下:
1、先試着使用固定的路徑運行一下,代碼如下:
這里的 xpath = '//*[@class="ant-select-dropdown-menu-item"][1]' , [1]代表點擊的是這個class下的第1號元素,即“母嬰用品”
可以執行成功,說明方法可行
2、下一步就是要把固定的參數[1]換成非固定參數,直接把[1]換一個值就可以了,list_li是從文件里讀取的當前傳入的數字,代碼如下:
執行失敗,提示定位不到這個元素
本次的 xpath =( '//*[@class="ant-select-dropdown-menu-item"][list_li]' ),
仔細看了一下,[list_li]是在 '' 里面的,所以這個值好像是沒傳成功,python把它當一個字符串讀取了
3、再換一種方式,試着把[list_li]寫在字符串外面,代碼如下:
本次的 xpath =( '//*[@class="ant-select-dropdown-menu-item"]'[list_li] ),
執行之后還是報錯,報錯提示 : xpath現在是一個html文檔類型,應該是一個元素類型。
雖然不明白什么意思吧,但肯定還是錯的,繼續改
4、試着把[list_li]寫在()外面,代碼如下:
本次的 xpath =( '//*[@class="ant-select-dropdown-menu-item"]')[list_li] ,
報錯:這種對象不支持索引,也就是說Xpath對象不支持索引,,
5、上面的思路都是想着定位到這個css,然后再定位索引,上面的思路走不通,就換一種思路
試着在xpath中直接新增參數,代碼如下
本次的 xpath =('//*[@class="ant-select-dropdown-menu-item"][text = 1母嬰用品]'),
報錯:不是一個有效的xpath表達式
6、實在不知道怎么辦的時候繼續百度,看到一個使用format把參數加進去的方法,試一下
還是以前的思路,將索引當做參數,但是這個參數不是直接放在里邊,是通過format添加進去的
本次的xpath: list_xpath = '//*[@class="ant-select-dropdown-menu-item"][{}]'.format(list_li)
試着執行一下,成功了!!!
總結:思路沒錯,就是使用的方法不對,直接把參數放進去不對,就使用別的方法添加進去,具體為什么這個可以我還沒有研究清楚