python+selenium 2--实现Chrome随机打开搜索结果

前章记录了简单实现Chrome自动搜索,此时想完善一下测试场景,于是想着添加了一个随机打开搜索结果的动作

一、根据百度搜索页面的html找到搜索结果的标签类名为 result

elements=driver.find_elements_by_class_name('result')

二、尝试打开获取到的第一个跳转,点击成功

elements[0].find_element_by_tag_name('a').click()

三、加入了随机数,窗口打开正常

#导入随机数模块
import random 

num=random.randint(0,9)
elements[num].find_element_by_tag_name('a').click()

四、此时浏览器上有2个窗口,新打开的窗口没有自动聚焦。由于只有搜索打开动作,我这里只简单的用句柄来判断一下

#定义当前窗口句柄(百度)
baidu_handle = driver.current_window_handle
#获取当前窗口句柄集合
handles = driver.window_handles
print(handles)
# 获取新窗口
new_handle = None
for handle in handles:
    if handle != baidu_handle:
        #捕获新打开的窗口
        new_handle = handle
print('switch to ', handle)
#新窗口打开搜索结果
driver.switch_to.window(new_handle)

成功!

详细代码如下:

#coding=utf-8
#导入时间模块
import time
#导入随机数模块
import random 
from selenium import webdriver

#打开Chome浏览器
driver=webdriver.Chrome()
#浏览器窗口最大化
driver.maximize_window()

first_url='http://www.baidu.com'
#打开百度
driver.get(first_url)
print ("access to %s " %(first_url))

#搜索框输入hello world
driver.find_element_by_id("kw").send_keys("hello world")
#点击搜索按钮
driver.find_element_by_id("su").click()
time.sleep(2)
#搜索页面的截图,保存到本地桌面
driver.save_screenshot('baidu.png')

#根据百度页面html分析,找到跳转元素
elements=driver.find_elements_by_class_name('result')
#此处取搜索结果第一个
#elements[0].find_element_by_tag_name('a').click()

#此处取搜索结果0~9任一个
num=random.randint(0,9)
elements[num].find_element_by_tag_name('a').click()

#定义当前窗口句柄(百度)
baidu_handle = driver.current_window_handle
#获取当前窗口句柄集合
handles = driver.window_handles
print(handles)
# 获取新窗口
new_handle = None
for handle in handles:
    if handle != baidu_handle:
        #捕获新打开的窗口
        new_handle = handle
print('switch to ', handle)
#新窗口打开搜索结果
driver.switch_to.window(new_handle)
#截图,保存到本地桌面
driver.save_screenshot('result.png')
time.sleep(3)
#退出整个浏览器
driver.quit()
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Selenium 和 Webdriver 来解决滑动验证码的问题,你需要模拟一个真实的用户操作。下面是一些基本步骤: 1. 打开目标网站并输入用户名和密码; 2. 等待页面加载完成; 3. 找到滑动验证码的元素,获取其位置信息; 4. 找到滑块元素,并获取其位置信息; 5. 使用 `ActionChains` 类来模拟用户的拖动操作,将滑块拖动到正确的位置; 6. 检查验证码是否成功通过。 下面是一份示例代码,你需要根据实际情况进行调整: ```python from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time # 打开网站 driver = webdriver.Chrome() driver.get("http://www.example.com") # 输入用户名和密码 username_input = driver.find_element_by_id("username") password_input = driver.find_element_by_id("password") username_input.send_keys("your_username") password_input.send_keys("your_password") driver.find_element_by_id("submit").click() # 等待页面加载 time.sleep(5) # 找到验证码元素 slider = driver.find_element_by_id("slider") slider_bg = driver.find_element_by_id("slider_bg") # 获取元素位置信息 slider_location = slider.location slider_bg_location = slider_bg.location # 计算滑块需要移动的距离 distance = slider_bg_location['x'] + slider_bg.size['width'] - slider_location['x'] - slider.size['width'] # 模拟滑动操作 action = ActionChains(driver) action.click_and_hold(slider).perform() action.move_by_offset(distance, 0).perform() action.release().perform() # 检查验证码是否通过 if "验证成功" in driver.page_source: print("验证码通过") else: print("验证码未通过") # 关闭浏览器 driver.quit() ``` 需要注意的是,有些网站会对滑块进行一些加固,例如添加滑动速度限制、滑块位置随机等,这些都需要你自己去适配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值