2014-01-30 4 views
1

current_url에 "something"이 포함될 때까지 드라이버를로드하고 싶습니다. 나는 다음과 같은 코드를 시도 :expected_conditions with Selenium [Python]

self.url = self.driver.current_url 
try: 
    element = WebDriverWait(self.driver, 20).until(EC.title_contains("XXX", "YYY", "ZZZ")) 
except: 
    print "\n IMPERFECT URL \n" 
finally: 
    self.driver.quit() 

그러나이 방법은 내가 문자열의 가능한 세트 내 현재의 URL을 확인하려면 ... 제목 검색을 사용합니다. 어떻게해야합니까? 또한 같은 URL에있는 문자열 세 세트를 확인하고 싶습니다. 누군가가 도와 줄 수 있었 을까? 나는 셀레늄에 초보자입니다.

답변

0

나는 expected_conditions 클래스에 당신이 원하는 것에 대한 정의가 존재하지 않는다고 생각합니다.

어떤 경우에 당신이 당신의 함수를 정의 lambda expressions을 사용할 수 있습니다하지만 당신은이 주제에 대한 좋은 설명을 제공하는이 두 가지 질문에 자신의 expected_conditions을 정의 할 수 있습니다 WebDriverWait.

이 정보가 도움이되기를 바랍니다.

+0

나는 꽤 초보자이며 당신이 언급 한 링크를 이해하지 못했습니다. 그리고 네, 제가 원하는 것을위한 EC 수업이 없습니다. 다른 링크가 있습니까? – Saheb

0

정확한 테스트를 수행하고 싶지 않습니다. 어쨌든 호출 가능을 통과하고 원하는 모든 것을 테스트 할 수 있습니다. 여기 google, blah 또는 foo 현재 URL의 존재 여부를 테스트 코드 작업의 예는 다음과 같습니다. (물론, 크롬 드라이버의 경로가 자신의 상황에 적용되어야한다)

from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 

driver = webdriver.Chrome("/home/ldd/src/selenium/chromedriver") 

driver.get("http://google.com") 

def condition(driver): 
    look_for = ("google", "blah", "foo") 
    url = driver.current_url 
    for s in look_for: 
     if url.find(s) != -1: 
      return True 

    return False 

WebDriverWait(driver, 10).until(condition) 

driver.quit() 

condition의 반환 값이 true 값이되면 즉시 대기가 종료됩니다. 그렇지 않으면 TimeoutException가 발생합니다. 을 ("google", ...)에서 삭제하면 TimeoutException이 표시됩니다.

+0

양식을 사용하여 제출 작업을 수행하고 있습니다. 제출 후 현재 페이지가 다른 페이지로 리디렉션됩니다. 리디렉션 된 페이지의 URL을 가져 오려고합니다. 알았어? – Saheb

+0

답변을 업데이트했습니다. 필자는''driver.current_url''에서 할 수있는 일종의 테스트를 상상 했었습니다. 그러나 당신이 염두에 두었던 것이 확실하지는 않습니다. 여하튼, 원리는 나의 대답에서 완전히 예시된다. – Louis