文档章节

Selenium Webdriver——操作隐藏的元素

tomiyo
 tomiyo
发布于 2017/03/29 21:52
字数 296
阅读 49
收藏 0

作者 何坤158109016@qq.com V2.0 2017/3/26 .更多内容请到: www.snappydata.top

有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了。例如,下面的情况: 页面主要通过“display:none”来控制整个下拉框不可见。这个时候如果直接操作这个下拉框,就会提示:

from selenium import webdriver
from selenium.webdriver.support.select import Select
import os,time

driver = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('test.html')
driver.get(file_path)

sel = driver.find_element_by_tag_name('select')
Select(sel).select_by_value('opel')
time.sleep(2)

driver.quit()

exceptions.ElementNotVisibleException: Message: element not visible: Element is not currently visible and may not be manipulated   我们需要通过javaScript修改display的值。

js = 'document.querySelectorAll("select")[0].style.display="block";'
driver.execute_script(js)

sel = driver.find_element_by_tag_name('select')
Select(sel).select_by_value('opel')

document.querySelectorAll("select")[0].style.display="block"; document.querySelectorAll("select")  选择所有的select。

[0] 指定这一组标签里的第几个。 style.display="block";  修改样式的display="block" ,表示可见。 执行完这句js代码后,就可以正常操作下拉框了。   Java代码

import java.io.File;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.By.ById;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.JavascriptExecutor;

public class SelectTest {

    public static void main(String[] args){
        
        WebDriver driver = new  ChromeDriver();
        File file = new File("C:/Users/fnngj/Desktop/test.html");
        String filePath = file.getAbsolutePath();
        driver.get(filePath);
        
         String js = "document.querySelectorAll('select')[0].style.display='block';";
        ((JavascriptExecutor)driver).executeScript(js);
        
        Select sel = new Select(driver.findElement(ById.xpath("//select")));
        sel.selectByValue("opel");
  
    }
}

本文转载自:http://www.snappydata.top/?p=195

tomiyo
粉丝 0
博文 7
码字总数 3131
作品 0
私信 提问
selenium系列----->脚本元素定位实例学习

Element Locators(元素定位器) Selenium Element Locator:http://blog.csdn.net/caiqcong/article/details/7542226 selenium中元素定位器的用法:http://blog.163.com/yangjianli/blog......

智能小松鼠
2015/02/17
0
0
Selenium是如何操纵浏览器的?

前言 上一篇文章《selenium webdriver 是怎么运行的》用了一个简单的例子——搭出租车,形象地讲解selenium webdriver 是如何运行的,而这一篇文章可以理解为深入了解selenium是如何和浏览器...

深圳-逸遥
2018/08/20
0
0
运维学python之爬虫工具篇(五)Selenium的用法

1 介绍 Selenium是一组不同的软件工具,每个工具都有不同的方法来支持自动化测试,Selenium支持多种语言开发,比如 Java、C、Python等。Selenium有两个版本,Selenium 2 (也叫Selenium WebDri...

578384
2017/12/28
0
0
自动化模块selenium使用归纳

安装 pip3 install selenium 测试是否成功 浏览器对象获取 WebDriver对象的方法和属性: addcookie(cookiedict):  为当前会话添加一个cookie,为字典类型 back(): 在浏览器历史记录中后退...

轻轻的往前走
03/08
0
0
如何过滤掉隐藏的元素

dirver.findelementbyxpath('//form//input[@class='el-input_inner'and not(contains(@style,'display:none'))]' 注意 not(contains(@style,'display:none'))就是过滤掉隐藏的元素,但是这种......

小新爱测试
2017/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

kubernetes API 访问控制在阿里云容器服务(ACK)上的实践

提起K8s API的访问控制,很多同学应该都会想到RBAC,这是K8s用来做权限控制的方法,但是K8s对API的访问控制却不止于此,今天我们就来简单介绍下K8s的访问控制以及ACK如何利用这套方法提供便捷...

zhaowei121
31分钟前
1
0
从HelloWorld看Knative Serving代码实现

概念先知 官方给出的这几个资源的关系图还是比较清晰的: 1.Service: 自动管理工作负载整个生命周期。负责创建route,configuration以及每个service更新的revision。通过Service可以指定路由流...

迷你芊宝宝
31分钟前
1
0
如何防止http请求数据被篡改

故事的开始,面试官问了我一个问题: 如何防止http请求中数据被篡改? 回答: 1.设置客户端IP黑/白名单 1.1.客户端所有请求,请求到代理服务器(nginx),代理服务器维护黑/白名单的ip,决定是...

太猪-YJ
35分钟前
2
0
好程序员大数据笔记之:Hadoop集群搭建

在学习大数据的过程中,我们接触了很多关于Hadoop的理论和操作性的知识点,尤其在近期学习的Hadoop集群的搭建问题上,小细节,小难点拼频频出现,所以,今天集中总结以下笔记,希望对各位同学...

好程序员IT
42分钟前
1
0
MySql用navcat连接时报错 2509

在8版本以后的MySql默认的加密方式都改为了caching_sha2_password 因此进入mysql的命令行更改加密方式即可 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER......

lanyu96
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部