webdriver处理循环点击

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webdriver处理循环点击相关的知识,希望对你有一定的参考价值。

未经作者允许,禁止转载!python selenium webdriver处理循环点击

循环点击主要是针对一些同类的选择按钮,或者下拉选项,或者是选择页码~~~~~~

如下面两张图片显示的将年份进行循环选择,和将鼠标悬浮循环选择

技术分享

技术分享

下面是用python写的 selenium webdriver处理循环点击代码,相关的java代码随后在发表

from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains

driver=webdriver.Chrome()
driver.get("http://toyota-oss:[email protected]/tcom-apps/vapi-preview/console.html")
#alert = driver.switch_to_alert()   如果是第一次打开上面的链接,就需要alert.accept(),但是从第二次之后保留了cookie就不再有弹窗
#alert.accept()
driver.maximize_window()
time.sleep(2)
print "进入toyota首页" 

#total_year=len(driver.find_element_by_id(‘year‘).find_element_by_tag_name(‘option‘))------报错:WebElement没有len属性
#print "年份的个数是"+total_year
#time.sleep(2)
#years=driver.find_element_by_id(‘year‘).find_element_by_tag_name(‘option‘)----------报错:WebElement没有循环属性
#for year in years:
#    year.click()
#    time.sleep(1)---------------本来打算用这个循环很方便的,但是总是报错,只能用下面的笨方法了!
modelyear=driver.find_element_by_xpath("//select[@id=‘year‘]/option[1]")
year2017=driver.find_element_by_xpath("//select[@id=‘year‘]/option[2]")
year2016=driver.find_element_by_xpath("//select[@id=‘year‘]/option[3]")
year2015=driver.find_element_by_xpath("//select[@id=‘year‘]/option[4]")
year2014=driver.find_element_by_xpath("//select[@id=‘year‘]/option[5]")
year2013=driver.find_element_by_xpath("//select[@id=‘year‘]/option[6]")

yearList=[modelyear,year2017,year2016,year2015,year2014,year2013]
for year in yearList:
    year.click()
    time.sleep(1)
time.sleep(3)

driver.find_element_by_xpath("//*[@id=‘console‘]/div[6]/input").click()
time.sleep(4)

Content1=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[1]")
Content2=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[2]")
Content3=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[3]")
Content4=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[4]")
Content5=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[5]")
Content6=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[6]")

ContentList=[Content1,Content2,Content3,Content4,Content5,Content6]
for Content in ContentList:
    Content.click()
    time.sleep(1)
print "循环点击结束"
time.sleep(2)

Content1=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[1]")
Content2=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[2]")
Content3=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[3]")
Content4=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[4]")
Content5=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[5]")
Content6=driver.find_element_by_xpath("/html/body/div[2]/div/nav/ul/li[6]")
ContentList=[Content1,Content2,Content3,Content4,Content5,Content6]

for Content in ContentList:
#above=driver.find_element_by_id("hao123-star")
    ActionChains(driver).move_to_element(Content).perform()
    time.sleep(1)
print "循环悬浮结束"
total_year=len(driver.find_element_by_id(‘year‘).find_element_by_tag_name(‘option‘))-------------报错:WebElement没有len属性
print "年份的个数是"+total_year
time.sleep(2)
years=driver.find_element_by_id(‘year‘).find_element_by_tag_name(‘option‘)-----------------------报错:WebElement没有循环属性
for year in years:
    year.click()
    time.sleep(1)
不知道为什么总是报错,我有点开始怀疑人生了!慢慢研究吧,有结果了在分享给大家!

above=driver.find_element_by_id("hao123-star")
ActionChains(driver).move_to_element(above).perform()

这段代码是:鼠标悬浮





以上是关于webdriver处理循环点击的主要内容,如果未能解决你的问题,请参考以下文章

selenium-webdriver循环点击百度搜索结果以及获取新页面的handler

如何使用 Selenium WebDriver 检查元素是不是可点击

通过 webdriver 点击 javascript 弹出窗口

在 for 循环期间 Selenium 关闭 webdriver

如何专注于第二个选项卡并使用 selenium webdriver 处理它

Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段