2016-11-22 72 views
1

我使用硒在Firefox中記錄測試用例。它記錄了一個按鈕,點擊/或像下面這個問題的任何行動,在Python中使用webdriver檢索任何元素的ID給定元素的值

driver = self.driver 
driver.get(self.base_url + "/") 
driver.find_element_by_id("ctl00__mainContent_lnkforgotpassword").click() 
driver.find_element_by_id("ctl00__mainContent_ucForgotPassword1_btnNext").click() 

這裏的司機利用了find_element_by_id方法來訪問元素和它的偉大工程。

但我的要求是要找到這個ID給該元素的只是文本, 像 -

如果忘記密碼是一個鏈接,我想取出這個鏈接的ID, 我將修改有關代碼,

driver.find_element_by_id(getID("Forgot Password")).click(). 

那麼,有沒有寫的getId()功能,從而獲取ID的方式的鏈接忘記密碼(或在某些標籤/按鈕的Id在其他情況下)從當前打開的頁面?

回答

0

您需要執行兩個步驟: 1.通過鏈接文本獲取元素 2.從該元素獲取id的屬性值。

您可以嘗試類似下面的代碼的東西來創建你的函數: (注:以下代碼是Java,你需要寫類似的Python代碼)

WebElement ele = driver.findElement(By.linkText("Forgot Password")); 
ele.getAttribute("id"); 

下面的鏈接將幫助作爲參考:

How to grab just element id - using Selenium WebDriver 2

http://www.software-testing-tutorials-automation.com/2014/01/how-to-locate-element-by-link-text-or.html

0

沒有辦法retri直接按照您提到的方式標識ID(或任何屬性)。

但是,只有找到該Web元素後才能找到Web元素的任何屬性/屬性。

操作如下:

elem = driver.find_element_by_link_text("Forgot Password")/returns Web Element, store it in some variable. 
print elem.get_attribute("id") 
print elem.get_property("id") // or use get_property 

參考:

  1. http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement
+0

這工作正常的鏈接。對於任何其他元素,比如按鈕,標籤等,你對鏈接文本的處理方式如何? – Vinay

+0

。首先,使用其中一個屬性(類,文本,鏈接文本,名稱等)標識元素,然後可以從該Web元素中檢索ID(如果存在)。 –

+0

find_element _ *()API返回** WebElement **,您可以使用它來使用WebElement API檢索Web元素的屬性/屬性。在答案中添加了WebElement API的參考URL。 –