2014-03-24 24 views
0

這非常簡單。我有一個包含href值的字符串。我想在頁面上找到包含特定href的web元素。我使用:如何使用href屬性查找網頁元素

String href = "http://www.bing.com/images?FORM=Z9LH"; 
driver.findElement(By.cssSelector("a[href*='" + href + "']")).click() 

如果檢查www.bing.com你可以看到,在左上角的第一個鏈接「圖像」有我在這裏設置href值。 當我運行時,它說在頁面上沒有這樣的元素。我覺得我沒有使用正確的「find by」選項。

回答

0

這應該爲你工作:

driver.findElement(By.cssSelector("li#scpt0>a")).click(); 
+0

我不相信這個單線可行。我需要能夠動態地更改變量href並在頁面上找到元素。 – simonshout

+0

你試過了嗎? – Richard

+0

是的,我有。在我上面的代碼中,我有一個循環,其中href會不斷變化。雖然您的單行版本可以成功點擊圖片鏈接! (在這種情況下,在我的循環中反覆) – simonshout

0

至於我可以看到我的鏈接顯示爲這樣:

href="/?scope=images&FORM=Z9LH1" 

因此你可能會試圖改變你的href變量的值。 (如果您使用chrome查看源代碼,請注意您在F12控制檯中看到的內容以及Ctrl+U看到的內容有所不同,Ctrl+U之一通常是在執行任何JS或進行子查詢之前查看Web解析器)

另外,請注意,搜索引擎(谷歌,bing ...)通常不喜歡被解析,他們會盡一切可能讓你的工作變得不可能:使用JS,iframe,改變模式......

+0

啊我看到了,我打算將其用於不同的網站,但僅用於快速調試,我在google/bing上運行它。我想他們不喜歡被刮,但href屬性是不應該改變的。 (我認爲?) – simonshout

+0

@ user2038633:那麼我們已經有兩個不同的'href'鏈接到同一個頁面,'&'可以被替換爲'&'等等...當你用Google改變'href'的值時點擊它。我聽說爲了讓他們的網站更難解析Facebook返回一個隨機頁面模板,呈現相同。那可能是一個傳奇,但總的來說,你應該在一個不會試圖破壞它們的網站上做你的測試:) – Robin