总而言之,我需要一些严肃的"愚蠢"的例子,说明如何在Python中编写代码,如果元素存在或不存在则会执行某些操作.我是编程的新手,我已经回顾了几天的帖子,我似乎无法弄清楚....
这是我想要做的.
from selenium.common.exceptions import NoSuchElementException, staleElementReferenceException
elem = driver.find_element_by_partial_link_text('Create Activity')
print("Searching for Create Activity.")
if elem.is_displayed():
elem.click() # this will click the element if it is there
print("FOUND THE LINK CREATE ACTIVITY! and Clicked it!")
else:
print ("NO LINK FOUND")
Run Code Online (Sandbox Code Playgroud)
所以,假设存在一个LINK,即element_by_partial_link_text('创建活动')
我得到了正确的答复......正在搜索创建活动.发现链接创造活动!并点击它!
我的问题是没有匹配的链接 element_by_partial_link_text('Create Activity')
我没有得到我在其他声明中所期望的东西.
print ("NO LINK FOUND")
我明白了......
回溯(最近一次调用最后一次):文件"",第1行,文件"C:\ Program Files(x86)\ Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py",第341行,在find_element_by_partial_link_text中返回self.find_element(by = By.PARTIAL_LINK_TEXT,value = link_text)文件"C:\ Program Files(x86)\ Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py",第745行,在find_element {'using':by,'value':value})['value']文件"C:\ Program Files(x86)\ Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py",第236行,执行self.error_handler.check_response(响应)文件"C:\ Program Files(x86)\ Python35-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py" ,第194行,在check_response中引发exception_class(message,screen,stacktrace)selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{"method":"部分链接文本","selector":"创建活动"}
我如何获得selenium Python来转换此异常或错误以不停止我的脚本并只处理ELSE语句.
谢谢,
ewc*_*wcz 11
您可以捕获异常并采取相应措施:
try:
elem = driver.find_element_by_partial_link_text('Create Activity')
if elem.is_displayed():
elem.click() # this will click the element if it is there
print("FOUND THE LINK CREATE ACTIVITY! and Clicked it!")
except NoSuchElementException:
print("...")
Run Code Online (Sandbox Code Playgroud)
另外,我可能会修改测试以确保元素确实是"可点击的":
if elem.is_displayed() and elem.is_enabled():
Run Code Online (Sandbox Code Playgroud)
find_element返回元素或throws NoSuchElementException,所以为了确定元素是否存在if条件的最佳方法,你应该尝试使用find_elements而不是捕获异常,因为它返回列表WebElement或空列表,所以你只需检查它的长度如下: -
elems = driver.find_elements_by_partial_link_text('Create Activity')
if len(elems) > 0 and elems[0].is_displayed():
elems[0].click()
print("FOUND THE LINK CREATE ACTIVITY! and Clicked it!")
else:
print ("NO LINK FOUND")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10681 次 |
| 最近记录: |