定位元素只是第一步,定位之后需要对这个元素进行操作,或点击(按钮)或输入(输入框)或提交(表单)等等。。。
一、click()方法实现键盘的点击
from selenium import webdriver
from time import sleep
dr = webdriver.Chrome()
url = "https://www.so.com"
dr.get(url)
#定位到360输入框,输入selenium
#send_keys()方法模拟键盘输入
dr.find_element_by_id("input").send_keys("selenium")
sleep(2)
#清除输入的内容
#clear()清除元素上的文本信息
dr.find_element_by_id("input").clear()
sleep(2)
#定位到360输入框,输入selenium自动化
dr.find_element_by_id("input").send_keys("selenium自动化")
sleep(2)
#定位到搜索按钮,并点击
dr.find_element_by_id("search-button").click()
二、send_keys()方法模拟上传文件
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.select import Select
dr = webdriver.Chrome()
dr.get("http://www.baidu.com")
dr.find_element_by_css_selector(".soutu-btn").click()
dr.find_element_by_css_selector(".upload-pic").send_keys(r"D:\python_logo.png")
三、text 返回元素的文本
from selenium import webdriver
driver = webdriver.Chrome()
url = “http://www.baidu.com”
driver.get(url)
#使用size属性,获取百度搜索框的尺寸,并赋值给变量input_size
input_size = driver.find_element_by_id("kw").size
#打印出百度搜索框的尺寸
print(input_size)
#使用text属性,获取百度底部的备案信息
bean_info = driver.find_element_by_id("cp").text
print(bean_info)
#使用get_attribute()方法,获取属性对应的值
#返回元素的属性值,可以是id、name、type或元素拥有的其他任意属性
#下面定位到百度首页的新闻这个文本链接,然后获取他的href属性对应的值
href_va = driver.find_element_by_link_text("新闻").get_attribute("href")
四、隐式等待
通过一定的时长等待页面的某个元素加载完成。
如果超出了设置的时长,元素还没有被加载出来,则抛出异常:NoSuchElementException。
from selenium import webdriver
driver = webdriver.Chrome()
#设置等待超时时间
driver = implicitly_wait(100)
#打开系统搜索页面
driver.get("https://www.so.com/")
#检查系统制定元素是否加载完成
element = driver.find_element_by_id("input22")
#在输入框中输入 selenium
element.send_keys("selenium")
implicitly_wait()默认参数的单位为秒,本例中设置等待时长为100秒,首先这100秒并非一个固定的等待时间,它并不影响脚本的执行速度。
其次,它并不真对页面上的某一元素进行等待,当脚本执行到某个元素定位时,如果元素可定位那么继续执行,如果元素定位不到,那么它将以轮询的方式不断的判断元素是否被定位到,假设在第6秒钟定位到元素则继续执行。直接超出设置时长(100秒)还没定位到元素则抛出异常。
在上面的例子中,显然360输入框的定位 id= input22 是有误的,那么在超出100秒后将抛出异常。
五、sleep等待
固定等待时间
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
sleep(5)
六、submit()用于提交表单
submit()方法用于提交表单,这里特别用于没提交