2013-10-03 3 views
0

문제 : 저장된 변수를 사용하여 요소 ID 개체를 선택할 수 없습니다.셀레늄/파이썬 - 저장된 변수로 요소 ID 선택

상황 : 페이지를 열고 변수를 선택하고 그 변수를 card_id에 저장 한 다음 마지막 페이지에서 id가 pick_id 인 변수와 저장된 변수를 찾아서 클릭해야합니다. 나는이 상황에 대해 분명히되기를 희망한다. 그렇지 않다면 물어보십시오. 나는 이것을 처리하기 위해 Selenium API 문서를 찾으려고 노력했다.

시험 코드 :

난 당신이 다음 드릴 다운 card_id을 찾아서 그것을 클릭 pick_id 요소를 가고 싶은 생각 당신의 설명에서
def test_00_validation_test(self): 
     driver = self.driver 
     driver.get(self.base_url) 
     driver.find_element_by_id("first_page").click() 
     driver.find_element_by_id("make_pick").click() 
     driver.find_element_by_xpath("(//input[@name='64'])[2]").click() 
     driver.find_element_by_id("save_pick").click() 
     self.assertEqual("Pick Was Saved", self.close_alert_and_get_its_text()) 
     card_id = driver.find_element_by_id("testingNum").get_attribute("value") 
     driver.find_element_by_id("confirm_pick_page").click() 
     driver.find_element_by_id("pick_id", card_id).click() 
+0

ID를 전달하면 셀렌이 찾지 못합니다. 아마 HTML에 없습니다. 만약 당신이 100 % html로 iframe에있을 수 있습니다. 자네도 정확히 알지 못해서 너를 도울 수 없어. –

+1

driver.find_element_by_id ("pick_id", card_id)는 무엇을 의미합니까? 이 함수에 두 개의 인수를 전달할 수 없습니다. 이 기능에서 달성하려는 것을 설명하십시오. – user1411110

+0

@ user1411110 맞습니다. 나는 두 번째 주장과 함께 그 주위를 속이려고 노력했다. 아니. 나는이'driver.find_element_by_id ("pick_id")와 같이 시도했다. click (card_id)'도 마찬가지였다. 나는 그것들이 유효하지 않다는 것을 알고 있지만,이 시나리오를 다루는 또 다른 방법을 찾을 수 없기를 바랬습니다. – Dave

답변

1

좋아.

card_id = driver.find_element_by_id("testingNum").get_attribute("value") 
pick_id = driver.find_element_by_id("pick_id") 
pick_id.find_element_by_id(card_id).click() 

당신은 항상 요소를 찾은 다음 find_element_by을 사용하여 해당 요소를 드릴 다운 할 수 있습니다 : 이것은으로 수행 할 수있다.

+0

그러면 NoSuchElementException이 발생합니다. 'card_id'는 저장된 변수이고'pick_id'의 사용법은'driver.'처럼 사용하고 있습니다. 작동하지 않습니다. 그냥 지옥을 위해, 나는 시도하고 실패했습니다. 도움을 주셔서 감사합니다! – Dave

+0

3 개의 인수를 가진'find_element_by_id' 함수를 사용하는 또 다른 방법이 있을까요? 또는 저장된 vale을 가진 요소를 취할 다른 함수가 있을까요? – Dave