js和dom

发送JS

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.implicitly_wait(10)

driver.get('http://www.baidu.com')


# 执行js指令。
js_code = 'return  document'
driver.execute_script(js_code)

# 有哪一些指令在 selenium 当中不存在的
# 1、
el = driver.find_element()
el.get_attribute('href')
el.set_attribute()

================================================

js 的简单使用

DOM 对象的document 是最重要的,

  • el = document.getElementById
  • el.value = ‘’

注意:js修改代码仅此一次生效,下次访问需要重新修改。

document.getElementById('email')					# 通过 document.getElementById 查询("元素")		

# 显示的结果:
<input id="email" class="atsx-input atsx-input-lg" autocomplete="off" data-test="inputForEmail" placeholder="邮箱" type="text" data-__meta="[object Object]" data-__field="[object Object]" value=""

el = document.getElementById('email')				# 给 赋值 el = document.getElementById 查询("元素")

# 显示的结果:
<input id="email" class="atsx-input atsx-input-lg" autocomplete="off" data-test="inputForEmail" placeholder="邮箱" type="text" data-__meta="[object Object]" data-__field="[object Object]" value=""

el.id="haha"										# 修改为 el.id="haha"

# 显示结果为:
"haha"

el													# 打印 el

# 显示的结果:  此时 id 已经改为 "haha"
<input id="haha" class="atsx-input atsx-input-lg" autocomplete="off" data-test="inputForEmail" placeholder="邮箱" type="text" data-__meta="[object Object]" data-__field="[object Object]" value="">

============================================================

用python的方式编写JS

import time

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.implicitly_wait(10)

driver.get('https://www.12306.cn/index/')

# 第一种方法:
# 执行 js 语句写上日期
time.sleep(5)
js_code = "let input = document.getElementById('train_date');input.readOnly = false;input.value = '2021-03-11';"
driver.execute_script(js_code)
time.sleep(5)

# 第二种方法:
# 可以把 python 和 js 混用
# input_elem = driver.find_element('id', 'train_date')
# time.sleep(2)

# 准备 js 代码
# js_code = "arguments[0].readOnly = false; arguments[0].value = '2021-03-22';"
# driver.execute_script(js_code, input_elem)
# time.sleep(3)

=============================================================================

窗口滚动

scrollTo : 滚动到 500px
案例1:window.scrollBy(0,500)
滑动到最底下,案例2:window.scrollBy(0,document.body.scrollHeight)

scrollBy: 滚动 100px

将元素滚动到可视范围之内

import time

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.implicitly_wait(10)

driver.get('https://www.12306.cn/index/')

# 找到需要定位的元素
el = driver.find_element('xpath', "//h2[contains(text(),'中国铁路官方微信')]")

# 讲元素滚动到可视范围之内
el.location_once_scrolled_into_view

time.sleep(3)

===================================================================

文件上传

import time

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.implicitly_wait(10)

driver.get('file:///D:/classes/web_auto_testing/lesson6/d1.html')


# 文件上传
# input 可以直接通过 send_keys 发送文件路径
f = driver.find_element('id', 'mfile')
f.send_keys(r'D:\classes\web_auto_testing\lesson6\总结')
time.sleep(2)

===============================================================

文件上传:
1、 send_keys : 一定要是 input 元素
2、 现在文件上传的元素不是 input , div
——— 只能借助第三方工具, 上传文件时,打开的窗口

安装:
pip install pywinauto

from pywinauto.keyboard import send_keys

import time

from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(10)

driver.get('file:///D:/classes/web_auto_testing/lesson7/code/d1.html')


# 文件上传
# input 可以直接通过 send_keys 发送文件路径
f = driver.find_element('id', 'mfile')

time.sleep(2)
# 触发点击事件,让系统的弹框出来
f.click()

# 等待,因为弹框弹出来需要时间
time.sleep(1)

# pywinauto 的 send_key
send_keys(r'C:\Users\muji\Desktop\qrcode.bmp')

# 确认提交,确定
send_keys('{VK_RETURN}')

# pyautogui
# pyautogui.write('d:\cases.xlsx')
# pyautogui.press('enter', 2)

time.sleep(3)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值