Selenium操作隐藏的元素

在工作中我们会遇到一些隐藏的元素,那么selenium就会无法操作这些元素了,例如像这样:

 我试着像以前操作一样,写了代码,操作之后报错:selenium.common.exceptions.NoSuchElementException: Message: Could not locate element with visible text: male

解决方法:

我们可以通过js来使元素可见,代码如下:

# document.querySelectorAll("select")  选择所有的select。
# [1] 指定这一组标签里的第2个。
# style.display="block";  修改样式的display="block" ,表示可见。

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

再举一个例子,该例子是输入框隐藏了;具体HTML如下:

<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
        <title>Checkbox</title>
        <script type="text/javascript" async="" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />
        <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
    </head>
<title>定位演示</title>
<script>
function gettext(){
    var url = document.getElementById("urlAdd").value;
   window.location.href=url;
}
</script>
<body>
  请输入网站:<input style="display:none" type="text" id="urlAdd" />
  <button οnclick="gettext()" id= "ok" >跳转</button>
</body>

</html>

python实现方式一:

# 1. 确定js
js = "document.getElementById('urlAdd').value = 'https://baike.baidu.com/'"
# 2. 执行js
driver.execute_script(js)
# 点击跳转
driver.find_element_by_id("ok").click()
time.sleep(5)


python实现方法二:

# 1. 确定js
js = 'document.getElementById("urlAdd").style.display="block";'
# 2. 执行js
driver.execute_script(js)
driver.find_element_by_id("urlAdd").send_keys("https://www.baidu.com")

# 点击跳转
driver.find_element_by_id("ok").click()
time.sleep(5)


假如面试官问我们如何定位隐藏元素以及如何操作?

回答:定位元素的话,直接用普通的定位方法即可,只是在操作元素上有些差异,需要用js去进行操作。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值