I have a 문제 (firefox) 을 사용하여 웹 페이지를 열 수 있는 나는 드라이버구성 어졌다면 캡처하기 몇 링크 등이 있다.
하지만 내 스크립트가 실행될 때 가져오는 것은 과거 실행하십시오 크론조프 통해 미세 CLI 의 첫 번째 find_element () 테스트. 일부 추가하여, 또는 그런 데릭쉐퍼드와 디버그로 돕는다구요 올랐는지 원인을 제대로 못하고 있다.
<a class="lnk" rel="nofollow" href="/login.jsp?destination=/secure/Dash.jspa">log in</a>
나는 find_element LINK_TEXT 의해 사용 방법:
login = driver.find_element(By.LINK_TEXT, "log in").click()
그래서 저는 싸움을 벌이고 있는 한 나는 조금 멍청한 놈, Python 언어 좀.
A) How do I check 해당 링크가 실제로 인계받아 기술입니까 의해 파이썬? Try / catch 블록 활용해야 합니까?
B) 는 더 이상 안정적으로 DOM element) 를 통해 우수 / 있을 LINK_TEXT? E. g. JQuery 에 사용할 수 있습니다 자세한 선택기를 $ (& # 39, & # 39 (로그인), a.lnk:contains) .do_something ();
나는 손가락을 문제 해결 및 그냥 내가 가장 큰 문제점은 호출하십시오 함께 스크립트입니다 잘못된 매개변수입니다 - 단순한 실수가.
건배, ns
a)
from selenium.common.exceptions import NoSuchElementException
def check_exists_by_xpath(xpath):
try:
webdriver.find_element_by_xpath(xpath)
except NoSuchElementException:
return False
return True
b) 를 사용하여, xpath - 가장 reliable.< < strike> /strike>; 또 전체 기능을 수행할 수 있는 표준으로 만들기 위해 xpath 스크립트와 같은 범용 언급하고 있습니다.
A) 그렇습네다. 가장 쉬운 방법은 '' a '는 단순히 여부를 확인할 수 있는 요소를 호출하십시오 find_element 인사이드라면 시도하시겠습니까 / catch'.
B) 의 2 가지 이유로 인해 사용하지 않고 항상 그 텍스트 요소 식별됩니다 시도하시겠습니까 거절당했군요.
솔루션이므로 인컨텍스트:
'어떻게' 는 질문에 대한 후속 조치를 통해 알 수 있습니다 / catch 시도하시겠습니까 요소점 존재하는 경우, 방관하겠나 좋은 예입니다 대기하는 여기에서 찾을 수 있습니다. http://seleniumhq.org/docs/04_webdriver_advanced.html
이 솔루션을 제공하는 전혀 없는 것 같은 I& 다는일은, 그래서 내 방식대로; d # 39 쉽게 추가할 수 있습니다.
기본적으로 확보하십시오 게 아니라, 그 결과 카운트입니다 요소와 요소 목록 # 39 의 경우, 해당 it& 제로 doesn& # 39, t 존재합니다. 예:
if driver.find_elements_by_css_selector('#element'):
print "Element exists"
이 " 디이브이 s"; '에서' find_elements_by_css_selector 가산 수 있도록 합니다.
또한, 이는 사실과 다른 답을 xpath 는 안정성과 그냥 사용하는 것이라고 말했습니다. Https://stackoverflow.com/questions/16788310/what-is-the-difference-between-css-selector-xpath-which-is-betteraccording-t 참조
꿈도 없이 솔루션을 try& 않고, 새로운 임포트합니다:
if len(driver.find_elements_by_id('blah')) > 0: #pay attention: find_element*s*
driver.find_element_by_id('blah').click #pay attention: find_element
하지만 이 답을 동일합니까 브라이언 추가합니까 츠템프코:
https://sqa.stackexchange.com/questions/3481/quicker-way-to-assert-that-an-element-does-not-exist
그래서 및 작동하잖아 빠르게 했다.
driver.implicitly_wait(0)
if driver.find_element_by_id("show_reflist"):
driver.find_element_by_id("show_reflist").find_element_by_tag_name("img").click()
그 후 나는 내 기본값입니다 리스토어할
driver.implicitly_wait(30)
' ()' 는 클래스 메서드를 이시즈 driver.find_element_by_id (some_id" ";).
우리가 원하는 것은:
'driver.find_element_by_id 이시즈 (some_id" ";)' 는 사전 있습니다.
"만약 이시즈 driver.find_element_by_id (some_id" ";) [# 39, & # 39 width&;] ! = 0: