一、使用Expected_conditions判断元素是否可见-6

1、处理定位报错的问题

  • 判断该元素存在,再输入。
  • 判断该元素不存在,抛出异常。
  • 依然是通过EC这个模块。

2、判断是否存在邮箱地址,存在,再操作。

  • 就不用担心元素不存在,程序报错。

3、判断传入的元素是否可见,是否在显示范围内。

  • 还是要先找元素
  • 但这样找,只能顺利的执行一次。
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC

element = driver.find_element_by_class_name("controls")
EC.visibility_of_element_located(element)

4、再加,在多少时间内,找相应元素,找到则返回true。否则为false。

  • 这里传的是定位方式和定位值,只用通过by方式就可以了。并非WebElement。
  • 同时,要添加close,因为每次实例化一个driver,可以看任务管理器,没有关闭。会导致加载很慢。
#coding=utf-8
from selenium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://www.5itest.cn/register")
time.sleep(5)
print(EC.title_contains("注册"))

localor = (By.CLASS_NAME,"controls")
WebDriverWait(driver,10).until(EC.visibility_of_element_located(localor))
driver.close()
PS D:\imooc\selenium> python .\start_browser.py

DevTools listening on ws://127.0.0.1:50745/devtools/browser/110e1640-0de6-447b-b243-a87c74a05029
<selenium.webdriver.support.expected_conditions.title_contains object at 0x000001F4B97616A0>
  •  当找不到时:
PS D:\imooc\selenium> python .\start_browser.py

DevTools listening on ws://127.0.0.1:51306/devtools/browser/342f159f-d7a9-485f-aade-27ce58b5b342
<selenium.webdriver.support.expected_conditions.title_contains object at 0x0000021D78F516A0>
Traceback (most recent call last):
  File ".\start_browser.py", line 16, in <module>
    WebDriverWait(driver,10).until(EC.visibility_of_element_located(localor))
  File "D:\Python\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:

 

posted @ 2022-08-17 10:19  酱汁怪兽  阅读(96)  评论(0编辑  收藏  举报