selenium自动化的一些问题

from:https://blog.csdn.net/qq_30975321/article/details/77622363
# coding: utf-8
from selenium import webdriver  # 导入webdriver模块
from selenium.webdriver.common.keys import Keys  # 导入键盘
from selenium.webdriver.common.action_chains import ActionChains  # 导入鼠标
import time
driver = webdriver.Chrome("C://chromedriver/chromedriver.exe")  # 需要选择合适的chromedriver,不然会报错
driver.get("https://baidu.com")
driver.find_element_by_id("kw").send_keys("python")
driver.find_element_by_id("kw").submit()  # 回车
# driver.find_element_by_css_selector("[name='wd']").send_keys(Keys.ENTER)
# driver.switch_to_window(driver.window_handles[0])  # 切换句柄(每个页面都有一个uuid作为句柄,这里并没有页面切换,所以无需切换)
time.sleep(3)  # 刚开始没有sleep时“driver.find_elements_by_css_selector("h3.t>a")”报错,因为页面加载未完成,无法马上找到元素
a = driver.find_elements_by_css_selector("h3.t>a") # 要使用“elements才能获取所有元素,“element”只能获取一个
# a = driver.find_elements_by_xpath("//*[@class='t']/a")  # 用xpath也是可以的,但是只能找到“class=‘t’”的,好像不支持正则匹配?

 

**************************分割*************************************

driver = webdriver.Chrome("C://chromedriver/chromedriver.exe")
driver.get("https://mail.163.com")
driver.implicitly_wait(30)  # 隐式等待,在最多30s内等待页面加载完成
driver.switch_to_frame("x-URS-iframe")  # 切换到iframe,which is more flexible
# driver.switch_to.frame("x-URS-iframe")  # 没有横线
# iframe = driver.find_element_by_tag_name("ifame")
# driver.switch_to_frame(iframe)
driver.find_element_by_name("email").send_keys("123")
driver.find_element_by_name("password").send_keys("456")
driver.switch_to.default_content()  # 返回主页面

********************分割*****************

select框

driver = webdriver.Chrome("C://chromedriver/chromedriver.exe")
driver.get("https://www.baidu.com")
driver.implicitly_wait(20)
mouse = driver.find_element_by_link_text("设置")  
ActionChains(driver).move_to_element(mouse).perform()  # 鼠标移动到“设置”链接上
driver.find_element_by_link_text("搜索设置").click()  # 点击”搜索设置“
time.sleep(3)  # 原本报错Element is not currently visible,加上sleep就好了,implicitly也会报错
nr = driver.find_element_by_id("nr")
nr.find_element_by_xpath("//option[@value='50']").click()
# driver.find_element_by_xpath("//select[@id='nr']/option[2]").click()
from selenium.webdriver.support.select import Select
Select(driver.find_element_by_id("nr")).select_by_value("50") # 直接通过导入Select模块实现

 

实际操作:打开百度,验证当“每页显示为10条”时搜索结果是否为10条,改为“每页显示为20条时”搜索结果是否为20条,并点击下一页进行验证。

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time

driver = webdriver.Chrome("C://chromedriver/chromedriver.exe")  # 打开chrome
print "已打开谷歌浏览器"
driver.get("https://baidu.com")
print "已打开百度"

driver.implicitly_wait(10)
mouse = driver.find_element_by_link_text("设置")  # ”设置“
ActionChains(driver).move_to_element(mouse).perform()  # 鼠标移到”设置“ 不要落下perform()
driver.implicitly_wait(10)
driver.find_element_by_link_text("搜索设置").click()  # ”搜索设置“点击
driver.implicitly_wait(10)
time.sleep(2)
driver.find_element_by_xpath("//select[@id='nr']/option[2]").click()  # 点击”每页显示20条“
driver.find_element_by_link_text("保存设置").click()  # 点击保存设置
driver.switch_to_alert().accept()  # 此时会弹出”修改保存“提示框,点击确定
print "已修改为20条"


time.sleep(1)
driver.find_element_by_id("kw").send_keys("python")  # 在搜索框输入”python“
driver.find_element_by_id("kw").send_keys(Keys.ENTER)  # 点击ENTER
print "搜索python"

driver.implicitly_wait(10)
a = driver.find_elements_by_css_selector("h3.t>a")  # 收集页面搜索结果
print "显示%s条" % len(a)

driver.implicitly_wait(10)
driver.find_element_by_css_selector("div#page>a.n").click()  # 点击下一页
a2 = driver.find_elements_by_css_selector("h3.t>a")  # 收集页面搜索结果
print "显示%s条" % len(a2)
driver.close()  # 能用driver.findxxxx().click()尽量别用ActionChainxxx

输出结果:

已打开谷歌浏览器
已打开百度
已修改为20条
搜索python
显示31条
显示31条

Process finished with exit code 0(百度个凑撒比,多出来的都是广告)

************************分割*******************

单选框radio,复选框checkbox

 <html>  
    <head>  
      <meta http-equiv="content-type" content="text/html;charset=utf-8"/>  
      <title>单选和复选</title>  
    </head>  
    <body>  

    <h4>单选:性别</h4>  
    <form>  
    <label value="radio">男</label>   
    <input name="sex" value="male"id="boy" type="radio"><br>  
    <label value="radio1">女</label>  
    <input name="sex" value="female"id="girl" type="radio">  
    </form>  
    
    <h4>微信公众号:从零开始学自动化测试</h4> 
    <form>  
    <!-- <labelfor="c1">checkbox1</label> --> 
    <input id="c1"type="checkbox">selenium<br>  
    <!-- <labelfor="c2">checkbox2</label> -->  
    <input id="c2"type="checkbox">python<br>  
    <!-- <labelfor="c3">checkbox3</label> -->  
    <input id="c3"type="checkbox">appium<br>  
    
    <!-- <form>  
    <input type="radio" name="sex" value="male"/> Male  
    <br />  
    <input type="radio" name="sex"value="female" /> Female  
    </form> -->  
    </body>  
    </html>  # 复制自https://blog.csdn.net/qq_30975321/article/details/77622363
# coding:utf-8
from selenium import webdriver

driver = webdriver.Chrome("C:/chromedriver/chromedriver.exe")
driver.get("C:\Users\cuifeng\Desktop\learn.html")

# 选中一部分
selenium = driver.find_element_by_id("c1")
python = driver.find_element_by_id("c2")
selenium.click()
python.click()

# 全部选中
checkboxs = driver.find_elements_by_xpath(".//*[@type='checkbox']")
for i in checkboxs:
    if i.is_selected() is False:  # 判断是否已经被选中
        i.click()

*********************表格*********************

用xpath定位:.//*[@id='myTable']/tbody/tr[2]/td[1]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值