开发者社区> 虫师2016> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

selenium操作隐藏的元素

简介:
+关注继续查看

 有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了。例如,下面的情况:

 

Python                                                     

  页面主要通过“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                                                         

   以下为java中的操作

复制代码
package com.jase.base;

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");
  
    }
}
复制代码

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【selenium】定位页面元素
简介:【selenium】定位页面元素
53 0
用selenium爬取淘宝美食
这里用淘宝来练习一下 selenium 的使用,可以替换关键字,爬取不同的物品,比如说衣服、鞋子之类的。 from selenium import webdriver from selenium.
1150 0
selenium切换窗口后定位元素出现问题的解决方案
在做UI自动化的过程中,有时需要由一个窗口跳转到另一个窗口,这时直接去定位页面元素,可能会出现问题,这时,我们需要将driver与新的窗口进行绑定。 完整代码如下:(python版) #coding=utf-8 import os from selenium import webdr...
1202 0
Selenium在异步加载中的应用
简书文章异步加载 之前爬虫小分队的第一次作业就是爬取简书七日热门,同学们应该知道部分数据是异步加载的,对于阅读,评论,喜欢的抓取数据策略为使用正则表达式匹配,收录专题就是找包来获取数据的。
828 0
Selenium
来源:http://www.51testing.com/zhuanti/selenium.html 来源:http://www.ltesting.net/ceshi/open/kygncsgj/selenium/
748 0
+关注
虫师2016
专注于软件测试技术的分享与推广
204
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载