2013-08-04 29 views
1

在我希望第一次使用類的情況下,我不必猜測find_elements_by_xpath(),我有什麼選擇?我們的目標是編寫更少的代碼,以確保對我所剽竊的源代碼的任何更改都可以輕鬆解決。本質上是否可能在Selenium中,如何使用find_elements_by_css_selector()來包含特定節點[1]

find_elements_by_css_selector('source[1]') 

這段代碼雖然不起作用。

我正在使用硒與Python和可能會使用phantomJS作爲web驅動程序(火狐測試)。

回答

3

CSS Selectors,方括號中選擇屬性,所以你的示例代碼試圖選擇與名爲1屬性的「源」類型的元素,如

<source 1="your_element" /> 

而我收集你想找到首先在看起來像這樣的列表:

<source>Blah</source> 
<source>Rah</source> 

如果你只是想第一個匹配的元素,你可以用單數形式:

element = find_element_by_css_selector("source") 

形式你使用返回一個列表,所以你也能得到第n-1元素以查找頁面(從0名單指數)的第N個實例:

element = find_elements_by_css_selector("source")[0] 

最後,如果你希望你的CSS選擇器是完全明確的,他們正在尋找元素,你可以使用nth-of-type選擇:

element = find_element_by_css_selector("source:nth-of-type(1)") 

你可能會在this blog post from Sauce Labs找到一些其他有用的信息,以幫助您編寫靈活的選擇來代替你的XPath 。

+0

謝謝,我知道CSS選擇器,並花了一些時間使用它們,但沒有意識到我可以在這段代碼中使用它們。 – Shane

+0

順便說一句,這在例如Firefox中工作,但出於某種原因在PhantomJS中超出範圍。 – Shane

+1

Weeeeeeeird。用'n型'?如果您只是使用find_element_by_css_selector(「source」),選項列表的長度是多少? –

相關問題