2013-10-05 52 views
1

問題:無法使用存儲值選擇頁面元素。選擇一個具有存儲值的頁面元素

情況:我需要打開一個頁面,使用find.element(By.ID,「element」,value = storedvalue).click()根據文檔,我應該可以做到這一點。也許我讀錯了?我得到一個TypeError,這意味着我正在使用錯誤的函數。 OO

http://selenium-python.readthedocs.org/en/latest/api.html

步驟通過代碼:

商店testingNum

轉至選擇已保存

驗證的myvalue值的另一個頁面的值是在當前頁面

選擇頁面元素pick_idmyvalue因爲它是實際值(見HTML)

HTML:

<li id="pick_id" value="261">261</li> 

測試代碼段:

myvalue = driver.find_element_by_id("testingNum").get_attribute("value") 
    driver.find_element_by_id("verify_btn").click() 
    self.assertTrue(self.is_text_present(myvalue)) 
    driver.find_element(By.ID, "pick_id", value=myvalue).click() 

錯誤:TypeError: find_element() got multiple values for keyword argument 'value'

回答

1

你得到,因爲你一個TypeError正在呼叫find_element錯誤。

不正確:

driver.find_element(By.ID, "pick_id", value=myvalue) 

find_element需要2個關鍵字參數,by,和value

您傳遞2個位置參數,然後是關鍵字參數。第二位置參數被解釋爲value。當你再通過關鍵字參數value=你會得到一個類型錯誤,因爲你所定義的「價值」

+0

好吧。我認爲這現在是正確的,但仍然得到TypeError:'driver.find_element(By.ID,「pick_id」,myvalue).click()'並嘗試'driver.find_element(By.ID,「pick_id」,myvalue )'和get,'TypeError:find_element()至多需要3個參數(給出4個)' – Dave

+0

Corey,你會如何寫出這個語句,以便點擊()這個頁面元素? – Dave

1

多個值您試圖匹配的兩個屬性 - idli元素value

正如@Corey所說,你調用find_element()錯誤;它需要2個關鍵字參數 - 第一個參數指定(ID,Name,xpath,css等),第二個參數指定過濾器value。當你想

使用XPath匹配多個屬性:

driver.find_element(by=By.XPATH, value="//li[@id='pick_id' and @value='" + myvalue+ "']") 
+0

謝謝,Faiz。但是,我在最後添加了.click()arg。它不會失敗,但也不會處理點擊事件。 – Dave

+0

'find_element()'調用是否找到正確的'li'元素?在調用click之前確保元素被正確識別 - 將元素分配給變量進行檢查。可能必須嘗試不同的xpath查詢,儘管這很簡單。您也可以嘗試點擊[action chains](http://selenium.googlecode.com/git/docs/api/py/webdriver/selenium.webdriver.common.action_chains.html)。 – Faiz

相關問題