2016-06-21 111 views
-1

我試着使用硒的webdriver點擊一個鏈接的文本,但不工作,硒的webdriver的XPath不工作

下面是使用螢火我的照片

HTML CODE

Offer Selection

在Firefox得到了xpath

html/body/div[1]/div/div/div[2]/div[2]/div[2]/a 

我用

driver.findElement(By.xpath("html/body/div[1]/div/div/div[2]/div[2]/div[2]/a")).click();

但仍然不起作用,任何理由爲何?

+0

可能有多種原因。一些想到的:1)你的HTML截圖說明了一些關於iframe的內容;你的場景中是否包含框架? 2)任何以「html」開頭的XPath都沒有正確優化,並且幾乎保證是脆弱的。 – SiKing

+0

檢查,代碼中沒有iFrames ...嘗試使用'driver.findelement(By.name)',仍然沒有工作 – user6401108

+0

請澄清「不工作」! – SiKing

回答

0

我看到name屬性在你的HTML代碼,但元素類型hidden.Selenium不隱藏elements.Try使用像「//input[@id='offerId']/..//a

0

第一其它路徑回答你的問題在評論-4相互作用,有兩種方法可以寫xpath。

  1. 相對的xpath:此XPath以 「//」,其指示開始,搜索元件從在DOM

  2. 絕對的xpath的特定位置:此XPath開始html/body,這表明,搜索該元件從DOM

相對的xpath搜索的所述第一標籤是比絕對的xpath搜索更快,因爲它從特定位置處的文檔中搜索沒有從DOM的根。

來到你的主要問題:

能否請您嘗試使用下面的代碼: driver.findElement(By.xpath("//*[text()='HTML CODE']"))driver.findElement(By.xpath("//*[text()='Offer Selection']"))

希望這有助於:)

+0

我必須同時使用這兩個或只是您提供的代碼之一嗎?並且會是'driver.findElement(By.xpath(「// * [text()='在g ...上賺取高達2.5%]」))。click();' – user6401108

+0

您可以使用標識網頁上各個元素的xpath。 –

0

嘗試下面的代碼,點擊使用鏈接部分鏈接文本。

wait.until(ExpectedConditions.elementToBeClickable(By.partialLinkText("EARN up to 2.5% on"))); 
driver.findElement(By.partialLinkText("EARN up to 2.5% on")).click(); 
相關問題