js操作.py
'''
==================================
cooding:utf-8
@Time :2020/8/22 9:29
@Author :henry
@Email :yinpingwei@gmail.com
@File :js操作.py
@Software:PyCharm
===================================
'''
'''
1.有一个顶层:document
2.通过document.getElementByxxxxx(定位元素)来找到元素
1.通过id:document.getElementById(定位元素)
是唯一的,不可能有两个id,如果有,那就是有问题
2.通过classname:document.getElementsByClassName(定位元素) 返回的列表
3.通过name:document.getElementsByName(定位元素)
4.通过TagName(标签名):document.getElementsByTagName(定位元素)
5.获取属性:
赋值:a = document.getElementById("xxx")
1.例如:a.id 返回id的值
2.例如:a.style 返回样式
3.例如:a.classname 返回classname值
4.例如:a.tagname 返回tagname 值
5.例如:a.name 返回name值
6.还有个非常重要的属性value,不显示,但是有:
a.value 返回value值
6.对属性上的修改
1.如何在DOM中去改变他的value值:
直接a.value = 新的值
2.a.readOnly 返回的是false,表示输入框是可以输入
3.修改返回值为ture,是输入框不可输入:
a.readOnly = ture 返回的是ture
4.还有一种是去掉这个属性:a.removeAttribute("readonly") 也可以进行修改
7.也可以通过a.getAttribute('定位方式') 这种来获取属性
例如:a.getAttribute('id')
'''
js操作之——日期框.py
"""
python执行js代码
表示语法:driver.execute_script(js代码,传给js代码的参数)
"""
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://www.12306.cn/index/")
loc = (By.ID, "train_date")
WebDriverWait(driver, 20).until(EC.visibility_of_element_located(loc))
ele = driver.find_element(*loc)
set_time = "2020-08-24"
js_code = 'arguments[0].removeAttribute("readonly");' \
'arguments[0].value = arguments[1];'
driver.execute_script(js_code, ele, set_time)
sleep(10)
driver.quit()
js操作——滚动条处理.py
"""
让元素滚动到可见区域后,再操作。
1、大部分的网页自己会滚
2、元素本身滚到可见的区域(使用这种):
ele.location_once_scrolled_into_view
3、使用js来处理:
element.scrollIntoView()
js_code = 'arguments[0].scrollIntoView()'
driver.execute_script(js_code,ele)
4.window.scrollTo(0,xxx)
"""
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element("id", "kw").send_keys("selenium", Keys.ENTER)
loc = (By.XPATH, '//a[text()="下一页 >"]')
WebDriverWait(driver, 20).until(EC.visibility_of_element_located(loc))
ele = driver.find_element(*loc)
js_code = 'arguments[0].scrollIntoView()'
driver.execute_script(js_code, ele)
sleep(10)
driver.quit()
