Python自动化之下拉框,隐藏标签定位 代码&报错解决

python自动化:下拉框定位方法之select标签 style="display: none;"
报错
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible: Element is not currently visible and may not be manipulated

界面源码:(禅道为例)


排查:
1)因为是隐藏的,需要操作其可见才可定位

2)若还是无法定位,请查看前后是否有sleep等待;xpath定位效率会低点。

‘‘‘
select标签定位
使用index
若是操作隐藏的元素的话:style="display: none;";【若不是隐藏的的话不需要js】
js = ‘document.querySelectorAll("select")[0].style.display="block";‘
driver.execute_script(js)
------
document.querySelectorAll("select")  选择所有的select。
[0] 指定这一组标签里的第几个。
style.display="block";  修改样式的display="block" ,表示可见。
执行完这句js代码后,就可以正常操作下拉框了。
‘‘‘
#index定位;导入:from selenium.webdriver.support.select import Select

js = ‘document.querySelectorAll("select")[2].style.display="block";‘#[2]:从零开始查第几个就写几
driver.execute_script(js)

project = driver.find_element_by_xpath("//*[@id=‘project‘]")
Select(project).select_by_index(1)      #从零查第几个option

Python自动化之下拉框,隐藏标签定位 代码&报错解决

原文地址:https://blog.51cto.com/dotest/2458424

时间: 2024-08-05 21:04:01

Python自动化之下拉框,隐藏标签定位 代码&报错解决的相关文章

python pip安装加速以及安装词云 wordcloud报错解决方法

我们正常用pip直接下载的话,因为是国外的下载源,所以下载的东西还是很慢的,而一旦断了就是红字了. 所以我们可以切换到国内的pip源来下载. 对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成功率 国内源: 新版ubuntu要求使用https源,要注意. 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云

elementUI 下拉框隐藏时触发相关事件(下拉框下拉显示时不触发)

原文:https://blog.csdn.net/CarryBest/article/details/79959389 今天做项目时,用elementUI框架,需要下拉框隐藏时出发某个函数,用了visible-change这个函数,发现点击时会触发两次我自己定义的函数,看了下官网的解释 :下拉框出现/隐藏时触发   如果只想在下拉框隐藏时触发该怎么做呢?下面是解决办法:官网定义:Select Events @visible-change 函数里面传递两个参数(第一个为回调参数,第二个为自己定义的

Python selenium PO By.XPATH定位元素报错

Python selenium PO  By.XPATH定位元素报错 如下代码经常报错: # 首页的“新建投放计划”按钮 new_ads_plan = (By.XPATH, "//*[text()='百度新闻']/..") print(type(self.new_ads_plan)) self.driver.find_element(self.new_ads_plan).click() 运行经常报错:selenium.common.exceptions.WebDriverExcepti

运行python代码报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 91: ordinal not in range(128)的解决办法

1.通过搜集网上的资料,自己多次尝试,问题算是解决了,在代码中加上如下几句即可: import sys reload(sys) sys.setdefaultencoding('utf-8') 2.原因就是Python的str默认是ascii编码,和unicode编码冲突,混淆了python2 里边的 str 和 unicode 数据类型. 3.python3 区分了 unicode str 和 byte arrary,并且默认编码不再是 ascii. 运行python代码报错UnicodeDec

python 链接codis 报错解决办法 command 'EXEC' is not allowed

[[email protected] ceph]# python ../pkg/redisbase.py Traceback (most recent call last):   File "../pkg/redisbase.py", line 85, in redis_hget     values = self.pipe.execute()   File "/usr/lib/python2.7/site-packages/redis/client.py", li

python 3使用binascii方法的报错解决

环境是python 3 问题: 使用binascii方法一直出现报错TypeError: a bytes-like object is required, not 'str' #coding: utf-8 import binascii a = 'worker' b = binascii.b2a_hex(a) print(b) #b = binascii.b2a_hex(a) #TypeError: a bytes-like object is required, not 'str' 解决方法:

JSP标签c forEach报错(一)

1.jsp标签c:forEach报错,具体错误如下: 三月 31, 2014 9:31:14 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet [jsp] in context with path [/HighCharts] threw exception [Unable to compile class for JSP: An error occurred at l

解决python中'chromedriver' executable needs to be in PATH报错

在使用python中的selenium模块的时候出现以下错误 解决: 问题是没有Chrome 驱动,那么先下载驱动. 下载之前先查看自己chrome当前的版本信息: 点击chrome浏览器右上角的圆圈标记处,在帮助-->关于Google Chrome(E)中查看浏览器的版本信息 之后打开网址http://npm.taobao.org/mirrors/chromedriver/找到对应的版本,下载并解压到自己想放的路径中. 然后在代码中添加chromedriver文件路径 from seleniu

吾八哥学Selenium(四):操作下拉框select标签的方法

我们在做web页面自动化测试的时候会经常遇到<select></select>标签的下拉框,那么在Python里如何实现去操作这种控件呢?今天就给大家分享一下这个玩法.为了让大家学习更方便,我准备了一个测试页面. 测试的html页面代码为: <html> <head> <title>学Python网 - Selenium学习测试页面</title> <body> 请选择2018年春节回家的方式! <select id