2016-08-12 64 views
0

我想用selenium和python將web元素的文本內容設置爲字符串。爲Selenium(Python)製作靈活的XPath

該代碼: monthname = browser.find_element_by_xpath("//*[@id='monthRow-7']/td[1]").text的作品,但我想能夠改變monthRow-7包括一個不同的數字。

我的想法是詢問用戶一個月(1-12),他們輸入的內容存儲在名爲monthnum的字符串中。然後,我可以將字符串monthnum連接到xpath以更改monthRow的數量。防爆。當提示輸入月份編號時,用戶輸入9,以便將monthRow-7更改爲monthRow-9。

我試過了: monthname = browser.find_element_by_xpath(("\"//*[@id='monthRow-") + monthnum + ("']/td[1]\"")).text其中monthnum是一個由用戶輸入設置的字符串。

但是,讓我一個錯誤,指出:

「消息:無效選擇:無法與xpath表達式來定位元件」 // * [@ id中= 'monthRow-7']/TD [ 1]「,因爲有以下錯誤: TypeError:無法對'Document'執行'evaluate':結果不是節點集,因此無法轉換爲所需的類型。」

錯誤中列出的xpath表達式與我的代碼中實際上工作的xpath表達式是相同的。有什麼方法可以通過將它的位分配給變量來更改xpath?

回答

0

我想用string formatting這個。

monthnum = 7 
monthname = browser.find_element_by_xpath("//*[@id='monthRow-{}']/td[1]".format(monthnum)).text 

這裏{}將通過monthnum值替換。

我不太清楚你試圖什麼,但我認爲您的解決方案應該像這樣工作:

monthname = browser.find_element_by_xpath("//*[@id='monthRow-" + monthnum + "']/td[1]").text 

所有這些圓括弧和額外的報價應該是不必要的。

+0

工作,非常感謝你!我是Python新手,甚至不知道.format存在。 –