Python+selenium(操作隐藏元素)

测试过程中,偶尔会碰到一些页面的隐藏元素,如下,是小编举的一个简单的例子:

test.html

<html>
    <head></head>
    <body>
        <select style="display:none;">
            <option value="volvo">Volvo</option>
            <option value="saab">Saab</option>
            <option value="opel">Opel</option>
            <option value="audi">Audi</option>
        </select>
    </body>
</html>

按照一般正常的元素定位进行操作,如下:

display.py

from selenium import webdriver
from selenium.webdriver.support.select import Select
from time import sleep

driver = webdriver.Firefox()
driver.get(r"E:\python_script\Book\test.html")

dr = driver.find_element_by_tag_name("select")
Select(dr).select_by_value("saab")
sleep(3)

driver.quit()

此时,运行代码结果是:

selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with

所以我们需要使用execute_script()方法,调用JavaScript代码修改display的值来实现

display.py

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

dr = driver.find_element_by_tag_name("select")
Select(dr).select_by_value("saab")
# ......

js代码分析:

document.querySelectorAll("select")[0].style.display="block";

document.querySelectorAll("select"):  选择所有的select类

[0]:  指定这一组标签里的第几个

style.display="block":  修改样式的display="block",表示可见

 

执行完这句js代码,就可以正常操作下拉框了。

 

转载于:https://www.cnblogs.com/NancyRM/p/8250381.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用selenium的execute_script方法来给隐藏元素赋值。具体步骤如下: 1. 使用find_element_by_xxx方法找到隐藏元素。 2. 使用execute_script方法执行JavaScript脚本,将值赋给该元素。 例如,假设隐藏元素的id为"hidden_input",需要给它赋值"hello",可以使用以下代码: ``` from selenium import webdriver driver = webdriver.Chrome() driver.get("http://example.com") # 找到隐藏元素 hidden_input = driver.find_element_by_id("hidden_input") # 使用JavaScript脚本给元素赋值 driver.execute_script("arguments[].value = 'hello';", hidden_input) ``` 执行完上述代码后,隐藏元素的值就会被赋为"hello"。 ### 回答2: 在使用 Selenium 操作 web 页面的时候,有时会遇到一些元素隐藏(Hidden)的情况,比如 `<input type="hidden">` 元素。这种隐藏元素无法通过常规的 `send_keys()` 方法来进行输入,需要使用一些特殊的方法来赋值。 首先,我们需要通过 Selenium 找到这个隐藏元素,可以使用 `find_element_by_xpath()` 或 `find_element_by_css_selector()` 等方法来定位元素。 然后,我们需要使用 `execute_script()` 方法来执行一段 JavaScript 脚本,从而改变这个隐藏元素的值。具体的 JavaScript 脚本如下: ``` document.querySelector('input[type="hidden"]').value = 'new value'; ``` 以上脚本中,`querySelector()` 方法用于查找页面中第一个符合要求的元素,我们可以通过修改选择器来定位到需要修改的隐藏元素。然后,我们将这个元素的 `value` 属性赋值为一个新的值即可。 完整的代码示例如下: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get('http://example.com') # 找到隐藏元素 hidden_element = driver.find_element_by_css_selector('input[type="hidden"]') # 输入新的值 driver.execute_script("arguments[0].value='new value';", hidden_element) ``` 注意,以上代码只是演示了如何赋值给一个隐藏元素,如果要操作其他类型的元素或执行其他 JavaScript 脚本,需要根据具体情况进行修改。另外,由于使用了 JavaScript 脚本,可能会影响页面的性能和稳定性,需要慎重使用。 ### 回答3: 在使用Python Selenium隐藏元素进行赋值操作时,需要先切换到隐藏元素所在的iframe或者frame中,才能对该元素进行操作。 步骤如下: 1. 定位到iframe或者frame ``` driver.switch_to.frame('iframe_name') ``` 2. 定位到隐藏元素 ``` element = driver.find_element_by_xpath('//input[@type="hidden"]') ``` 3. 执行赋值操作 ``` driver.execute_script("arguments[0].value='your_value';", element) ``` 其中,`execute_script`方法用于执行JavaScript脚本,`arguments[0]`表示传入的第一个参数(即`element`),`.value`用于设置`input`元素的值。 需要注意的是,赋值操作只有在提交表单或者保存修改时才会生效,否则页面重新加载后将失效。因此,如果需要保持该值,在进行其他操作前需要及时提交表单或者保存修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值