selenium没有exist_xxx相关的方法,无法直接判断元素存在。但是锁定元素时使用的 browser.find_elements(By.CSS_SELECTOR, "css元素") 会返回一个列表 list ,如果不存在这个元素就会返回一个空列表。因此我们曲线救国,比如:
browser.find_elements(By.CSS_SELECTOR, "css元素")
list
if len(browser.find_elements(By.CSS_SELECTOR, "a.paging_next")) == 0: # 元素不存在的逻辑 else: # 元素存在的逻辑 完整示例程序 比如使用如下代码获取一个网页: from selenium import webdriver from selenium.webdriver.common.by import By option = webdriver.ChromeOptions() option.add_argument('--disable-gpu') option.add_argument('lang=zh_CN.UTF-8') prefs = { "profile.managed_default_content_settings.images": 2, # 禁止加载图片 option.add_experimental_option("prefs", prefs) browser = webdriver.Chrome(options=option) browser.get("https://www.baidu.com") 得到百度的页面 此时如果随便索引一个,结果为0: print(len(browser.find_elements(By.CSS_SELECTOR, "a.paging_next"))) 而如果索引下面那一部分,得到结果18: print(len(browser.find_elements(By.CSS_SELECTOR, "div#s-top-left a"))) 索引网页内存在的内容,得到结果['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘', '更多', '', '', '', '', '', '', '', '', '', ''] print([_v.text for _v in browser.find_elements(By.CSS_SELECTOR, "div#s-top-left a")]) selenium没有exist_xxx相关的方法,无法直接判断元素存在。但是锁定元素时使用的。,如果不存在这个元素就会返回一个空列表。而如果索引下面那一部分,得到结果。索引网页内存在的内容,得到结果。此时如果随便索引一个,结果为。 1、前面有介绍过使用Python中的sleep()方法来进行等待:等待一定的时间,让元素加载出来后再执行代码 ⑴但是元素加载出来的时间是不固定的,有时长有时短,因此我们等待的时间就不固定了 ⑵最好的办法是:每隔一定的时间后使用Selenium中的一些方法来判断元素是否加载了出来(这个就是后面要介绍的"显式等待") ①元素加载出来了,就不继续等待了 ②元素未加载出来,就继续等待 2、另外就是在做自动化的时候,有时候会需要判断元素是否存在,i... 通过自己上网查找资料,在Python中成功 安装了selenium,同时在PyCharm里面也成功安装了selenium,并将下列三个小问对应的解决方法封装在一个类里。webelement_handler.py webelement_handler.py """使用selenium 操作Web元素""" from selenium import webdriver class WebElementHandler(): """网页元素处理类""" def __init__(self, url): """url:需要测试网页的url(服务器上的网页用域名,本 定位元素过程中,经常会遇到元素明明定位成功了,但是报错却提示确实没有找到,这就是面试过程中经常遇到的元素不可见的问题。 元素不可见 首先要想到是什么属性导致元素不可见,然后我们可以通过修改这个属性进行确认。 hidden=“hidden” 元素的可见与不可见通过hidden这个属性来控制的。在一个元素前面加上这个属性就会导致当前元素不可见。 这里举个小栗子: 这里先找个正常的输入框 用户名:<br> <input type="te function dragFunc(id) { var Drag = document.getElementById(id); Drag.onmousedown = function(event) { var ev = event || window.event; event.stopPropagat 另外一种是有这 样的元素,但是是 hidden 状态 最后一种是出现了,但是别遮挡住了,能判断到存在但是 某些操作操作不了, 可以采取js的方法让遮挡的 元素显示出来,再去做响应的操作 可以通过先判断是否存在,如果不存在返回 false;如果存在再去判断是否 displayed #判断元素是否存在,driver.find_element(by=by, value=value),找不到这个元素则报异常 import unittest import time from selenium import webdriver from selenium.webdriver import ActionChains class VisitSogouByIE(unittest.Test... 自动化测试中,有时可以根据某元素是否出现(即可见)来进行断言,判断元素是否可见的方法如下: from selenium.webdriver.support import expected_conditions as EC def is_element_visible(self, element): driver = self.driver python解决urllib发送请求报错:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED].....> winwhere: 设置了后,还是报错,后来使用正确上网方式才解决。 解决fatal error: Python.h: No such file or directory报错 你好现在解决了没有 selenium判断元素是否存在的方法 《哈哈论》: 为什么我这么用报错说 object of type 'WebElement' has no len() flask Form表单数据传递与取值 呆萌的代Ma: 我只知道input可以触发,其他的不太清楚了
比如使用如下代码获取一个网页:
from selenium import webdriver from selenium.webdriver.common.by import By option = webdriver.ChromeOptions() option.add_argument('--disable-gpu') option.add_argument('lang=zh_CN.UTF-8') prefs = { "profile.managed_default_content_settings.images": 2, # 禁止加载图片 option.add_experimental_option("prefs", prefs) browser = webdriver.Chrome(options=option) browser.get("https://www.baidu.com") 得到百度的页面 此时如果随便索引一个,结果为0: print(len(browser.find_elements(By.CSS_SELECTOR, "a.paging_next"))) 而如果索引下面那一部分,得到结果18: print(len(browser.find_elements(By.CSS_SELECTOR, "div#s-top-left a"))) 索引网页内存在的内容,得到结果['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘', '更多', '', '', '', '', '', '', '', '', '', ''] print([_v.text for _v in browser.find_elements(By.CSS_SELECTOR, "div#s-top-left a")]) selenium没有exist_xxx相关的方法,无法直接判断元素存在。但是锁定元素时使用的。,如果不存在这个元素就会返回一个空列表。而如果索引下面那一部分,得到结果。索引网页内存在的内容,得到结果。此时如果随便索引一个,结果为。 1、前面有介绍过使用Python中的sleep()方法来进行等待:等待一定的时间,让元素加载出来后再执行代码 ⑴但是元素加载出来的时间是不固定的,有时长有时短,因此我们等待的时间就不固定了 ⑵最好的办法是:每隔一定的时间后使用Selenium中的一些方法来判断元素是否加载了出来(这个就是后面要介绍的"显式等待") ①元素加载出来了,就不继续等待了 ②元素未加载出来,就继续等待 2、另外就是在做自动化的时候,有时候会需要判断元素是否存在,i... 通过自己上网查找资料,在Python中成功 安装了selenium,同时在PyCharm里面也成功安装了selenium,并将下列三个小问对应的解决方法封装在一个类里。webelement_handler.py webelement_handler.py """使用selenium 操作Web元素""" from selenium import webdriver class WebElementHandler(): """网页元素处理类""" def __init__(self, url): """url:需要测试网页的url(服务器上的网页用域名,本 定位元素过程中,经常会遇到元素明明定位成功了,但是报错却提示确实没有找到,这就是面试过程中经常遇到的元素不可见的问题。 元素不可见 首先要想到是什么属性导致元素不可见,然后我们可以通过修改这个属性进行确认。 hidden=“hidden” 元素的可见与不可见通过hidden这个属性来控制的。在一个元素前面加上这个属性就会导致当前元素不可见。 这里举个小栗子: 这里先找个正常的输入框 用户名:<br> <input type="te function dragFunc(id) { var Drag = document.getElementById(id); Drag.onmousedown = function(event) { var ev = event || window.event; event.stopPropagat 另外一种是有这 样的元素,但是是 hidden 状态 最后一种是出现了,但是别遮挡住了,能判断到存在但是 某些操作操作不了, 可以采取js的方法让遮挡的 元素显示出来,再去做响应的操作 可以通过先判断是否存在,如果不存在返回 false;如果存在再去判断是否 displayed #判断元素是否存在,driver.find_element(by=by, value=value),找不到这个元素则报异常 import unittest import time from selenium import webdriver from selenium.webdriver import ActionChains class VisitSogouByIE(unittest.Test... 自动化测试中,有时可以根据某元素是否出现(即可见)来进行断言,判断元素是否可见的方法如下: from selenium.webdriver.support import expected_conditions as EC def is_element_visible(self, element): driver = self.driver python解决urllib发送请求报错:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED].....> winwhere: 设置了后,还是报错,后来使用正确上网方式才解决。 解决fatal error: Python.h: No such file or directory报错 你好现在解决了没有 selenium判断元素是否存在的方法 《哈哈论》: 为什么我这么用报错说 object of type 'WebElement' has no len() flask Form表单数据传递与取值 呆萌的代Ma: 我只知道input可以触发,其他的不太清楚了
from selenium import webdriver from selenium.webdriver.common.by import By option = webdriver.ChromeOptions() option.add_argument('--disable-gpu') option.add_argument('lang=zh_CN.UTF-8') prefs = { "profile.managed_default_content_settings.images": 2, # 禁止加载图片 option.add_experimental_option("prefs", prefs) browser = webdriver.Chrome(options=option) browser.get("https://www.baidu.com") 得到百度的页面 此时如果随便索引一个,结果为0:
得到百度的页面
此时如果随便索引一个,结果为0:
0
print(len(browser.find_elements(By.CSS_SELECTOR, "a.paging_next"))) 而如果索引下面那一部分,得到结果18: print(len(browser.find_elements(By.CSS_SELECTOR, "div#s-top-left a"))) 索引网页内存在的内容,得到结果['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘', '更多', '', '', '', '', '', '', '', '', '', ''] print([_v.text for _v in browser.find_elements(By.CSS_SELECTOR, "div#s-top-left a")]) selenium没有exist_xxx相关的方法,无法直接判断元素存在。但是锁定元素时使用的。,如果不存在这个元素就会返回一个空列表。而如果索引下面那一部分,得到结果。索引网页内存在的内容,得到结果。此时如果随便索引一个,结果为。 1、前面有介绍过使用Python中的sleep()方法来进行等待:等待一定的时间,让元素加载出来后再执行代码 ⑴但是元素加载出来的时间是不固定的,有时长有时短,因此我们等待的时间就不固定了 ⑵最好的办法是:每隔一定的时间后使用Selenium中的一些方法来判断元素是否加载了出来(这个就是后面要介绍的"显式等待") ①元素加载出来了,就不继续等待了 ②元素未加载出来,就继续等待 2、另外就是在做自动化的时候,有时候会需要判断元素是否存在,i... 通过自己上网查找资料,在Python中成功 安装了selenium,同时在PyCharm里面也成功安装了selenium,并将下列三个小问对应的解决方法封装在一个类里。webelement_handler.py webelement_handler.py """使用selenium 操作Web元素""" from selenium import webdriver class WebElementHandler(): """网页元素处理类""" def __init__(self, url): """url:需要测试网页的url(服务器上的网页用域名,本 定位元素过程中,经常会遇到元素明明定位成功了,但是报错却提示确实没有找到,这就是面试过程中经常遇到的元素不可见的问题。 元素不可见 首先要想到是什么属性导致元素不可见,然后我们可以通过修改这个属性进行确认。 hidden=“hidden” 元素的可见与不可见通过hidden这个属性来控制的。在一个元素前面加上这个属性就会导致当前元素不可见。 这里举个小栗子: 这里先找个正常的输入框 用户名:<br> <input type="te function dragFunc(id) { var Drag = document.getElementById(id); Drag.onmousedown = function(event) { var ev = event || window.event; event.stopPropagat 另外一种是有这 样的元素,但是是 hidden 状态 最后一种是出现了,但是别遮挡住了,能判断到存在但是 某些操作操作不了, 可以采取js的方法让遮挡的 元素显示出来,再去做响应的操作 可以通过先判断是否存在,如果不存在返回 false;如果存在再去判断是否 displayed #判断元素是否存在,driver.find_element(by=by, value=value),找不到这个元素则报异常 import unittest import time from selenium import webdriver from selenium.webdriver import ActionChains class VisitSogouByIE(unittest.Test... 自动化测试中,有时可以根据某元素是否出现(即可见)来进行断言,判断元素是否可见的方法如下: from selenium.webdriver.support import expected_conditions as EC def is_element_visible(self, element): driver = self.driver python解决urllib发送请求报错:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED].....> winwhere: 设置了后,还是报错,后来使用正确上网方式才解决。 解决fatal error: Python.h: No such file or directory报错 你好现在解决了没有 selenium判断元素是否存在的方法 《哈哈论》: 为什么我这么用报错说 object of type 'WebElement' has no len() flask Form表单数据传递与取值 呆萌的代Ma: 我只知道input可以触发,其他的不太清楚了
print(len(browser.find_elements(By.CSS_SELECTOR, "a.paging_next"))) 而如果索引下面那一部分,得到结果18:
而如果索引下面那一部分,得到结果18:
18
print(len(browser.find_elements(By.CSS_SELECTOR, "div#s-top-left a"))) 索引网页内存在的内容,得到结果['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘', '更多', '', '', '', '', '', '', '', '', '', ''] print([_v.text for _v in browser.find_elements(By.CSS_SELECTOR, "div#s-top-left a")]) selenium没有exist_xxx相关的方法,无法直接判断元素存在。但是锁定元素时使用的。,如果不存在这个元素就会返回一个空列表。而如果索引下面那一部分,得到结果。索引网页内存在的内容,得到结果。此时如果随便索引一个,结果为。 1、前面有介绍过使用Python中的sleep()方法来进行等待:等待一定的时间,让元素加载出来后再执行代码 ⑴但是元素加载出来的时间是不固定的,有时长有时短,因此我们等待的时间就不固定了 ⑵最好的办法是:每隔一定的时间后使用Selenium中的一些方法来判断元素是否加载了出来(这个就是后面要介绍的"显式等待") ①元素加载出来了,就不继续等待了 ②元素未加载出来,就继续等待 2、另外就是在做自动化的时候,有时候会需要判断元素是否存在,i... 通过自己上网查找资料,在Python中成功 安装了selenium,同时在PyCharm里面也成功安装了selenium,并将下列三个小问对应的解决方法封装在一个类里。webelement_handler.py webelement_handler.py """使用selenium 操作Web元素""" from selenium import webdriver class WebElementHandler(): """网页元素处理类""" def __init__(self, url): """url:需要测试网页的url(服务器上的网页用域名,本 定位元素过程中,经常会遇到元素明明定位成功了,但是报错却提示确实没有找到,这就是面试过程中经常遇到的元素不可见的问题。 元素不可见 首先要想到是什么属性导致元素不可见,然后我们可以通过修改这个属性进行确认。 hidden=“hidden” 元素的可见与不可见通过hidden这个属性来控制的。在一个元素前面加上这个属性就会导致当前元素不可见。 这里举个小栗子: 这里先找个正常的输入框 用户名:<br> <input type="te function dragFunc(id) { var Drag = document.getElementById(id); Drag.onmousedown = function(event) { var ev = event || window.event; event.stopPropagat 另外一种是有这 样的元素,但是是 hidden 状态 最后一种是出现了,但是别遮挡住了,能判断到存在但是 某些操作操作不了, 可以采取js的方法让遮挡的 元素显示出来,再去做响应的操作 可以通过先判断是否存在,如果不存在返回 false;如果存在再去判断是否 displayed #判断元素是否存在,driver.find_element(by=by, value=value),找不到这个元素则报异常 import unittest import time from selenium import webdriver from selenium.webdriver import ActionChains class VisitSogouByIE(unittest.Test... 自动化测试中,有时可以根据某元素是否出现(即可见)来进行断言,判断元素是否可见的方法如下: from selenium.webdriver.support import expected_conditions as EC def is_element_visible(self, element): driver = self.driver python解决urllib发送请求报错:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED].....> winwhere: 设置了后,还是报错,后来使用正确上网方式才解决。 解决fatal error: Python.h: No such file or directory报错 你好现在解决了没有 selenium判断元素是否存在的方法 《哈哈论》: 为什么我这么用报错说 object of type 'WebElement' has no len() flask Form表单数据传递与取值 呆萌的代Ma: 我只知道input可以触发,其他的不太清楚了
print(len(browser.find_elements(By.CSS_SELECTOR, "div#s-top-left a"))) 索引网页内存在的内容,得到结果['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘', '更多', '', '', '', '', '', '', '', '', '', '']
索引网页内存在的内容,得到结果['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘', '更多', '', '', '', '', '', '', '', '', '', '']
['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘', '更多', '', '', '', '', '', '', '', '', '', '']
print([_v.text for _v in browser.find_elements(By.CSS_SELECTOR, "div#s-top-left a")]) selenium没有exist_xxx相关的方法,无法直接判断元素存在。但是锁定元素时使用的。,如果不存在这个元素就会返回一个空列表。而如果索引下面那一部分,得到结果。索引网页内存在的内容,得到结果。此时如果随便索引一个,结果为。 1、前面有介绍过使用Python中的sleep()方法来进行等待:等待一定的时间,让元素加载出来后再执行代码 ⑴但是元素加载出来的时间是不固定的,有时长有时短,因此我们等待的时间就不固定了 ⑵最好的办法是:每隔一定的时间后使用Selenium中的一些方法来判断元素是否加载了出来(这个就是后面要介绍的"显式等待") ①元素加载出来了,就不继续等待了 ②元素未加载出来,就继续等待 2、另外就是在做自动化的时候,有时候会需要判断元素是否存在,i... 通过自己上网查找资料,在Python中成功 安装了selenium,同时在PyCharm里面也成功安装了selenium,并将下列三个小问对应的解决方法封装在一个类里。webelement_handler.py webelement_handler.py """使用selenium 操作Web元素""" from selenium import webdriver class WebElementHandler(): """网页元素处理类""" def __init__(self, url): """url:需要测试网页的url(服务器上的网页用域名,本 定位元素过程中,经常会遇到元素明明定位成功了,但是报错却提示确实没有找到,这就是面试过程中经常遇到的元素不可见的问题。 元素不可见 首先要想到是什么属性导致元素不可见,然后我们可以通过修改这个属性进行确认。 hidden=“hidden” 元素的可见与不可见通过hidden这个属性来控制的。在一个元素前面加上这个属性就会导致当前元素不可见。 这里举个小栗子: 这里先找个正常的输入框 用户名:<br> <input type="te function dragFunc(id) { var Drag = document.getElementById(id); Drag.onmousedown = function(event) { var ev = event || window.event; event.stopPropagat 另外一种是有这 样的元素,但是是 hidden 状态 最后一种是出现了,但是别遮挡住了,能判断到存在但是 某些操作操作不了, 可以采取js的方法让遮挡的 元素显示出来,再去做响应的操作 可以通过先判断是否存在,如果不存在返回 false;如果存在再去判断是否 displayed #判断元素是否存在,driver.find_element(by=by, value=value),找不到这个元素则报异常 import unittest import time from selenium import webdriver from selenium.webdriver import ActionChains class VisitSogouByIE(unittest.Test... 自动化测试中,有时可以根据某元素是否出现(即可见)来进行断言,判断元素是否可见的方法如下: from selenium.webdriver.support import expected_conditions as EC def is_element_visible(self, element): driver = self.driver python解决urllib发送请求报错:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED].....> winwhere: 设置了后,还是报错,后来使用正确上网方式才解决。 解决fatal error: Python.h: No such file or directory报错 你好现在解决了没有 selenium判断元素是否存在的方法 《哈哈论》: 为什么我这么用报错说 object of type 'WebElement' has no len() flask Form表单数据传递与取值 呆萌的代Ma: 我只知道input可以触发,其他的不太清楚了
print([_v.text for _v in browser.find_elements(By.CSS_SELECTOR, "div#s-top-left a")]) selenium没有exist_xxx相关的方法,无法直接判断元素存在。但是锁定元素时使用的。,如果不存在这个元素就会返回一个空列表。而如果索引下面那一部分,得到结果。索引网页内存在的内容,得到结果。此时如果随便索引一个,结果为。 1、前面有介绍过使用Python中的sleep()方法来进行等待:等待一定的时间,让元素加载出来后再执行代码 ⑴但是元素加载出来的时间是不固定的,有时长有时短,因此我们等待的时间就不固定了 ⑵最好的办法是:每隔一定的时间后使用Selenium中的一些方法来判断元素是否加载了出来(这个就是后面要介绍的"显式等待") ①元素加载出来了,就不继续等待了 ②元素未加载出来,就继续等待 2、另外就是在做自动化的时候,有时候会需要判断元素是否存在,i... 通过自己上网查找资料,在Python中成功 安装了selenium,同时在PyCharm里面也成功安装了selenium,并将下列三个小问对应的解决方法封装在一个类里。webelement_handler.py webelement_handler.py """使用selenium 操作Web元素""" from selenium import webdriver class WebElementHandler(): """网页元素处理类""" def __init__(self, url): """url:需要测试网页的url(服务器上的网页用域名,本 定位元素过程中,经常会遇到元素明明定位成功了,但是报错却提示确实没有找到,这就是面试过程中经常遇到的元素不可见的问题。 元素不可见 首先要想到是什么属性导致元素不可见,然后我们可以通过修改这个属性进行确认。 hidden=“hidden” 元素的可见与不可见通过hidden这个属性来控制的。在一个元素前面加上这个属性就会导致当前元素不可见。 这里举个小栗子: 这里先找个正常的输入框 用户名:<br> <input type="te function dragFunc(id) { var Drag = document.getElementById(id); Drag.onmousedown = function(event) { var ev = event || window.event; event.stopPropagat 另外一种是有这 样的元素,但是是 hidden 状态 最后一种是出现了,但是别遮挡住了,能判断到存在但是 某些操作操作不了, 可以采取js的方法让遮挡的 元素显示出来,再去做响应的操作 可以通过先判断是否存在,如果不存在返回 false;如果存在再去判断是否 displayed #判断元素是否存在,driver.find_element(by=by, value=value),找不到这个元素则报异常 import unittest import time from selenium import webdriver from selenium.webdriver import ActionChains class VisitSogouByIE(unittest.Test...
自动化测试中,有时可以根据某元素是否出现(即可见)来进行断言,判断元素是否可见的方法如下: from selenium.webdriver.support import expected_conditions as EC def is_element_visible(self, element): driver = self.driver python解决urllib发送请求报错:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED].....> winwhere: 设置了后,还是报错,后来使用正确上网方式才解决。 解决fatal error: Python.h: No such file or directory报错 你好现在解决了没有 selenium判断元素是否存在的方法 《哈哈论》: 为什么我这么用报错说 object of type 'WebElement' has no len() flask Form表单数据传递与取值 呆萌的代Ma: 我只知道input可以触发,其他的不太清楚了