2013-04-06 99 views
3

我想在Python 2.7中使用Selenium中的web元素。元件ID是這樣的:使用Selenium與python通過部分ID選擇元素?

cell.line.order(240686080).item(250444868).unitCost 

的第一個號碼串「240686080」是已知的,但第二個數字「250444868」是預先未知。

我試圖通過這樣的東西達到它。

from selenium import webdriver 
driver = webdriver.Firefox() 
driver.get("somewebsite.com") 
driver.find_elements_by_id('input.line.order(240417939).item('+ '\d{9}'+').unitCost') 

所以我的問題是,有無論如何,我們可以搜索並達到這個元素只有部分ID已知?

我在下面的回答中發現了類似的問題,但它在C#中。不幸的是,我不知道C#。

Finding an element by partial id with Selenium in C#

預先感謝您!

編輯4/8

的元素編碼是這樣的:

<td id="cell.line.order(240417939).item(250159165).unitCost" class="or_monetarydata"> 
    <input id="input.line.order(240417939).item(250159165).unitCost" type="hidden" value="135.00" 
    name="order(240417939).item(250159165).unitcost"></input> 

    135.00 

    </td> 

我可以

value=driver.find_elements_by_xpath("//*[contains(@id, 'input.line.order(240417939)')]") 

謝謝你得到的元素列表!

回答

6

雖然答案是C#,底層的解決方案仍然是相同的,通過使用CSS選擇器:

driver.find_elements_by_css_selector('input[id*='cell.line.order(240686080)']') 

或XPath也能做到這一點:

driver.find_elements_by_xpath('//*[contains(@id, 'cell.line.order(240686080)')]') 
+0

我可以使用第二種獲取列表的方法,最後一種是我想要的。但我無法使用[-1] .get_attribute('value')來獲取值屬性。你知道爲什麼嗎?謝謝。 這個項目的源代碼是這樣的: 135.00 – bing 2013-04-08 15:49:15

+0

算了。我用'input.line.order(240686080)'替換'cell.line.order(240686080)''得到我需要的。謝謝!!! – bing 2013-04-08 16:17:05

+0

@Arran:它給我 imgLink = browser.find_elements_by_css_selector( 'IMG [ID $ =' Image_img ']') ^ 語法錯誤:。試圖用「我無法找到DIV更換外」無效的語法 任何想法? – 2015-03-06 20:03:00

相關問題