python selenium+ie 如何定位js生成的元素?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python selenium+ie 如何定位js生成的元素?相关的知识,希望对你有一定的参考价值。

如题。python selenium+ie 如何定位js生成的元素? 现在有一个网页,使用ie11打开,右击-查看源,看不到iframe,只有一对js代码。 右击-检查元素,可以看到该iframe。也就是说js渲染完成后,就有这个元素了。 然后,在python中,使用switch_to.frame(),提示 找不到。 我应该怎样做,才能定位到该元素,并对其进行点击等操作呢?

参考技术A xpath定位,你用
chrome浏览器
,在页面上右键-》
审查元素
,然后会弹出开发者工具,里面会显示你选中部分的页面源码并
高亮
你选择的地方,在源码里右键,选择copy
xpath
用这个定位

基于python实现UI自动化4.1 selenium发送163邮箱邮件

python-UI自动化

1.0 selenium工具介绍

1.0 selenium工具介绍

2.0 selenium环境搭建

2.0 selenium环境搭建

3 Selenium的元素定位

3.0 selenium常见8大元素定位

3.0 selenium - webdriver常见8大元素定位

3.1 selenium通过By定位元素

3.1 selenium通过By定位元素

3.2 selenium通过JS定位元素

3.2 selenium通过JS定位元素

3.3 JS处理浏览器滚动条

3.3 JS处理浏览器滚动条

3.4 JS 处理日历控件(删除 readonly 属性)

3.4 JS 处理日历控件(删除 readonly 属性

4 selenium 多表单(iframe/ frame)切换

4 selenium 多表单(iframe/ frame)切换

4.1 例子:以发送163邮箱邮件为例

发送163邮箱详细,参考代码如下:

# coding:utf-8
# @Time : 2021-01-15 22:03
# @Author : lht3347
# @File : send_163_email.py

from selenium import webdriver
from time import sleep

dr = webdriver.Chrome()
dr.get("https://mail.163.com/")
# 最大化窗口
dr.maximize_window()
sleep(2)
#定位登录框的iframe
login_Frame = dr.find_element_by_xpath('//*[@id="loginDiv"]/iframe')
#表单切换
dr.switch_to.frame(login_Frame)
#定位账号输入框并输入
dr.find_element_by_name('email').send_keys("你的163邮箱")
#定位密码输入框并输入
dr.find_element_by_name('password').send_keys("你的密码")
sleep(1)
#点击登录按钮
dr.find_element_by_id('dologin').click()
sleep(1)
#点击写信://*[@id="_mail_component_137_137"]/span[2]
dr.find_element_by_xpath(
        '//*[@class="js-component-component ra0 mD0"]/span[2]').click()
sleep(1)
#输入收件人
dr.find_element_by_xpath(
        "//input[@class='nui-editableAddr-ipt'and @role='combobox']")\\
    .send_keys('收件人邮箱')
#添加主题:css的定位 ------ div.bz0>div>input.nui-ipt-input
dr.find_element_by_xpath(
        "//*[@class='nui-ipt-input'and @type = 'text' and @tabindex = '1']")\\
    .send_keys('friends')

#定位写信区域的Frame
IFrame = dr.find_element_by_class_name('APP-editor-iframe')
#切换窗口
# dr.switch_to_frame(IFrame) # 删除线的方法表示在selenium 3中该方法已经out了,但不影响使用
dr.switch_to.frame(IFrame)

#输入写信内容(先定位,再操作)
dr.find_element_by_xpath('/html/body').send_keys("我是帅哥")

sleep(2)
#切换会默认窗口
dr.switch_to.default_content()
#定位发送按钮且点击: //*[@class="frame-main-cont-head"]/div/div/div/span[2]
dr.find_element_by_xpath( '//*[@class="frame-main-cont-head"]/div/div/div/span[2]').click()

sleep(10)
# 关闭浏览器
dr.quit()

结尾

如果你觉得文章对你有帮助,请动起你们的小手手点下赞(大拇指)哈(一键三连更好),Thanks♪(・ω・)ノ。

以上是关于python selenium+ie 如何定位js生成的元素?的主要内容,如果未能解决你的问题,请参考以下文章

基于python实现UI自动化3.2 selenium通过JS定位元素

3 Python+Selenium的元素定位方法(idclass namenametag name)

基于python实现UI自动化3.3 Selenium - JS处理浏览器滚动条

Selenium2+python自动化65-js定位几种方法总结

python + selenium + Js 处理轮动条

Python+Selenium笔记:元素定位