【学习笔记】Selenium WebDriver的基本运用(三)

本文涉及的基础知识点为:窗口切换IFrame切换警告框的操作、下拉框的操作、悬浮框的操作、三种等待方式以及文件的上传与下载。

1.窗口切换以及IFrame

1.1窗口切换

rom selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By


browser = webdriver.Firefox()
browser.maximize_window()
browser.get('https://www.runoob.com/html/html-basic.html')

# 点击 链接 下的第三个  尝试一下
browser.find_element(By.CSS_SELECTOR, 'div.example:nth-child(18) > a:nth-child(4)').click()
sleep(2)

# 1.切换窗口
# 定义一个handles用于获取窗口的句柄值
handles = browser.window_handles
# 按照句柄的下标来选择窗口(从0开始)
# 切换至第二个窗口
browser.switch_to.window(handles[1])
# browser.switch_to_window()
print("第二个网页的标题是:",browser.title)  # 打印当前窗口的标题
sleep(2)

1.2 IFrame       (千万不要忘了切回主布局页面)

# 2.切换frame
# 切换到子页面
browser.switch_to.frame('iframeResult')

# 点击 链接 这是一个链接使用了 href 属性
browser.find_element(By.LINK_TEXT, '这是一个链接使用了 href 属性').click()
# NoSuchElementException 没有此元素异常
sleep(2)

# 切换回主页面
browser.switch_to.default_content()
browser.quit()

2.警告框

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By


browser = webdriver.Firefox()
browser.maximize_window()
browser.get('https://www.runoob.com/try/try.php?filename=tryjs_alert')

browser.switch_to.frame('iframeResult')

browser.find_element(By.XPATH, '/html/body/input').click()
sleep(3)

# 对非页面元素的警告框操作
browser.switch_to.alert.accept()     # 点击 确定
# browser.switch_to.alert.dismiss()  # 点击 取消

browser.switch_to.default_content()

browser.quit()

4.下拉框

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select

browser = webdriver.Firefox()
browser.maximize_window()
browser.get('https://www.runoob.com/try/try.php?filename=tryhtml_select2')

browser.switch_to.frame('iframeResult')

# 定位下拉框
select_element = browser.find_element(By.NAME,'cars')

# is_selected()判断元素是否被选中
if not select_element.is_selected():
    select_element.click()

# 按value属性选择
Select(select_element).select_by_value('saab')
sleep(2)

# 按可见文本选择
Select(select_element).select_by_visible_text('Fiat')
sleep(2)

# 按索引值选择(从0开始)
Select(select_element).select_by_index(3)
sleep(2)

browser.switch_to.default_content()
browser.quit()

5.悬浮框

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

browser = webdriver.Firefox()
browser.maximize_window()
browser.get('https://www.baidu.com')

# 先定位到 更多
more = browser.find_element(By.NAME,'tj_briicon')

# 悬浮
ActionChains(browser).move_to_element(more).perform()
time.sleep(3)

# 点击音乐
browser.find_element(By.NAME,'tj_mp3').click()
time.sleep(3)

browser.quit()

6.三种等待方式

强制等待: sleep(等待时长) 单位s

显式等待: WebDriverWait(浏览器,最大等待时长,间隔时间)

隐式等待: implicitly_wait(最大等待时间)单位s 作用于整个脚本

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions
import time

# 隐式等待
browser = webdriver.Firefox()
browser.maximize_window()
browser.get('https://www.baidu.com')

browser.implicitly_wait(10) # (最大等待时长 单位s) 作用于整个脚本
browser.find_element(By.LINK_TEXT,'新闻').click()

browser.quit()

# 显式等待
browser = webdriver.Firefox()
browser.maximize_window()
browser.get('https://www.baidu.com')

WebDriverWait(browser,10,2).until(expected_conditions.presence_of_element_located((By.ID,'kw1')))
# 此处会报错:TimeoutException 超时异常
browser.find_element(By.ID,'kw').send_keys('CSDN_AloofXu')
time.sleep(1)

browser.quit()

7.文件的上传与下载

7.1.文件的上传(本质上就是定位元素后后send_keys)

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By


# 文件上传
firefox = webdriver.Firefox()
firefox.maximize_window()
firefox.get('http://www.sahitest.com/demo/php/fileUpload.htm')

firefox.find_element(By.ID,'file').send_keys('C:\\Users\\Administrator\\Desktop\\1.txt')
sleep(2)
firefox.quit()

7.2.文件的下载

知识点:

① browser.download.folderList   用于设置下载路径(1默认 2自定义)

②browser.download.dir ,路径     设置具体下载路径

③browser.download.manager.showWhenStarting,False    设置是否显示下载器 不显示

④browser.helperApps.neverAsk.saveToDisk,文件格式       设置无需弹窗提醒 设置下载文件格式

具体使用看下面代码:

# 文件下载
# 设置浏览器的下载参数
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList',2)      # 设置下载路径(1默认 2自定义)
profile.set_preference('browser.download.dir','D:\\')        # 设置具体下载盘 D盘根目录
profile.set_preference('browser.download.manager.showWhenStarting',False)   # 设置是否显示下载器 不显示
profile.set_preference('browser.helperApps.neverAsk.saveToDisk','application/zip')  # 无需弹窗提醒 文件下载格式为zip

firefox = webdriver.Firefox(firefox_profile=profile)         # 使用上面设置的新设置打开浏览器
# firefox = webdriver.Firefox(options=profile)
firefox.maximize_window()
firefox.get('http://sahitest.com/demo/saveAs.htm')
firefox.find_element(By.LINK_TEXT,'testsaveas.zip').click()
sleep(2)

firefox.quit()

Enjoy!!!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 配置Selenium WebDriver可以按照以下步骤进行操作(以Windows 7系统为例): 1. 首先,下载最新的Selenium jar包。 2. 在Selenium jar包所在的文件夹中创建一个bat文件,文件内容如下: java -jar selenium-server-standalone-3.11.0.jar 3. 双击bat文件即可启动Selenium服务器,如果启动成功,会显示"Selenium server is up and running*** public class FirstWebDriverDemo { public static void main(String[] args){ WebDriver driver; String baseURL; /** * 在调用Firefox浏览器时,需要设置Firefox的安装路径,如果使用了自定义的安装路径, * 则需要执行以下代码进行设置。 */ System.setProperty("webdriver.firefox.bin","E:\\Mozilla Firefox\\firefox.exe"); driver=new FirefoxDriver(); baseURL="https://www.baidu.com/"; //打开百度首页 driver.get(baseURL); //在搜索框中输入selenium driver.findElement(By.id("kw")).sendKeys("selenium"); //单击“搜索”按钮 driver.findElement(By.id("su")).click(); } } 在配置WebDriver过程中,可能会遇到一些错误。比如,报错"Exception in thread "main" org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed..."。这个错误是因为无法找到Firefox浏览器的可执行文件。解决方法是在代码中设置Firefox的安装路径,如上述代码所示。同时,确保已经正确安装了Firefox浏览器。 希望以上信息可以帮助到您配置Selenium WebDriver。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Selenium及各浏览器WebDriver的配置总结](https://blog.csdn.net/qq_33291559/article/details/80025035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [selenium学习笔记——selenium WebDriver实现原理及安装配置(基于java)](https://blog.csdn.net/vikeyyyy/article/details/79961123)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值