2013-07-31 40 views
1

我試圖訪問此div並稍後單擊它。無法使用cssSelector定位元素

<div class="leaflet-marker-icon marker-cluster marker-cluster-small leaflet-clickable leaflet-zoom-animated" style="margin-left: -6px; margin-top: -6px; width: 12px; height: 12px; opacity: 1; transform: translate(702px, 396px); z-index: 396;" title="13 tracks listened in , UA"> 

這裏就是我想要做的事:

WebElement cluster = driver.findElement(By.cssSelector("marker-cluster-small")); 

這裏就是我試圖做的事:

WebElement cluster = driver.findElement(By.xpath("//div[@class='leaflet-marker-icon marker-cluster marker-cluster-small leaflet-clickable leaflet-zoom-animated']")); 

的方法都不奏效。第一個引發「無法定位元素」消息。第二個沒有錯誤,但當我這樣做時:

cluster.click(); 

沒有任何反應。 我在做什麼錯? 謝謝。

+0

單擊此元素時的預期操作是什麼? – Seanny123

+0

如果沒有直接的命令工作,那麼使用JSExecutor作爲最後的手段。請參閱 - http://docs.seleniumhq.org/docs/03_webdriver.jsp#using-javascript。 – Akbar

回答

4

你應該試試這個頁面上的答案How can I find an element by CSS class with XPath?。 您應該可以通過僅搜索「marker-cluster-small」來完成與您的第一個答案接近的內容。希望它以某種方式幫助。 因此,這將是 ("//div[contains(@class, 'marker-cluster-small')]")

+0

+1提「含」 – Seanny123

+0

乾杯! @ Seanny123 – conor

+0

謝謝!我能夠找到一個元素,但仍然無法點擊它。點擊時,我猜想腳本的另一部分應該工作(看起來像點擊元素的某種統計信息出現在另一個菜單中)。如果有人有時間查看,請訪問locate.tunehog.com。 – user2637419

0

您還可以通過CSS找到它:

driver.find_element(:css, '.leaflet-marker-icon.marker-cluster.marker-cluster-small.leaflet-clickable.leaflet-zoom-animated') 

但在這種情況下,康納爾的回答是最好的,因爲類值爲太冗長。

0

在你的CSS選擇器中,你只是告訴它marker-cluster-small - 但這不起作用,因爲它正在尋找一個元素標記,而不是一個類。爲了使它看起來一類,你需要點符號是這樣的:

div.marker-cluster-small 

.marker-cluster-small 

記住,在類CSS選擇器比XPath選擇更有效地工作呢,因爲你可以僅舉一個類 - 即使元素也有其他類。

因此,我建議這是理想的解決方案定位器,使用CSS簡潔,高效:

WebElement cluster = driver.findElement(By.cssSelector(".marker-cluster-small")); 

附:在Firefox上使用firepath驗證CSS。

相關問題