Selenium模块学习笔记

这篇博客详细介绍了Selenium模块的使用,包括创建WebDriver、打开网页、元素定位、文本输入、窗口与frame切换、下拉菜单操作、拖放功能、以及弹窗处理等关键步骤,是Selenium自动化测试的学习宝典。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Selenium模块学习笔记

头文件:

from selenium import webdriver

from selenium import webdriver

fromselenium.webdriver.common.action_chains import ActionChains

from selenium.webdriver.support.selectimport Select

from selenium.webdriver.common.keysimport Keys

1.  创建一个Chrome WebDriver

driver= webdriver.Chrome(executable_path="/path/to/chromedriver")

drive =webdriver.Ie(executable_path="/path/to/chromedriver")

其中executable_path为driver的绝对路径。

 

2.打开网页

    driver.get(url)

其中url为网页的地址,例如:https://www.baidu.com/

 

3.查询元素

HTML定义形式如下:

    <inputtype="text" name="passwd" id="passwd-id" />

查找方法:

    element= driver.find_element_by_id("passwd-id")

element= driver.find_element_by_name("passwd")

element= driver.find_element_by_xpath("//input[@id='passwd-id']")

element= driver.find_element_by_class_name("s_ipt")

element= driver.find_element_by_link_text(‘新闻’)

例如:

element= driver.find_element_by_link_text(‘新闻’)

       element.click()

就可以实现访问“新闻”页。

 

4.在文本框中输入内容

先定位到文本框,然后清楚数据,再使输入文本。

例如:

    elem =driver.find_element_by_xpath(‘//*[@id="u1"]/a[1]’)

elem.clear()

elem.send_keys("sometext")

清除数据:

一般在文本框中输入数据时先要清理文本框中原来的数据。

 

5.定位问题

       1)窗口切换

对于含有多个窗口时,应该先确定目标所在的窗口,然后切换到该窗口中。

driver.switch_to.window(‘switch_windows’)

 

例如:

       driver= webdriver.Firefox()

driver.get("http://xueshu.baidu.com/")

# 获得百度学术搜索窗口句柄

search_windows= driver.current_window_handle

sleep(2)

 

driver.find_element_by_link_text('注册').click()

# 获得当前所有打开的窗口的句柄

all_handles= driver.window_handles

 

# 回到学术搜索窗口

forhandle in all_handles:

          if handle == search_windows:

              driver.switch_to.window(search_windows)

              sleep(2)

              print("now is searchwindow!")

              driver.find_element_by_id('kw').send_keys('selenium')

              driver.find_element_by_id('su').click()

              sleep(2)

driver.quit()

 

       2)frame/iframe切换

对于同一窗口定位而言,首先确定目标所在frame/iframe的位置,切换到所在的frame中。

例如:

以下为HTML代码index.html。

<htmllang="en">

<head>

    <title>FrameTest</title>

</head>

<body>

<iframesrc="a.html"id="frame1"name="myframe"></iframe>

</body>

</html>

要定位其中的iframe并换,可以通过如下代码:

from selenium import webdriver

driver = webdriver.Firefox()

driver.switch_to.frame(0)  # 1.用frame的index来定位,第一个是0

#driver.switch_to.frame("frame1") # 2.用id来定位

#driver.switch_to.frame("myframe") # 3.用name来定位

#driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))  # 4.用WebElement对象来定位

 

对于这种情况可以这样定位frame:

<iframesrc="myframetest.html" />

xpath定位,传入WebElement对象:

driver.switch_to.frame(driver.find_element_by_xpath("//iframe[contains(@src,'myframe')]"))

 

6.切换下拉菜单

 

    1)options:

    element =driver.find_element_by_xpath("//select[@name='name']")

all_options= element.find_elements_by_tag_name("option")

foroption in all_options:

           print("Valueis: %s" % option.get_attribute("value"))

           option.click()

 

上面这段代码将会寻找页面第一个 “SELECT” 元素, 并且循环他的每一个OPTION元素, 打印值,然后按顺序都选中一遍。

 

方法二:

fromselenium.webdriver.support.ui import Select

select= Select(driver.find_element_by_name('name'))#先定位下拉菜单位置

# select= Select(driver.find_element_by_xpath('xpath'))

select.select_by_index(index)#选择下拉菜单

select.select_by_visible_text("text")

select.select_by_value(value)

 

取消已经选择所有的option:

select= Select(driver.find_element_by_id('id'))

select.deselect_all()

获取所有选项:

options= select.options

查找某个按钮并点击:

#Assume the button has the ID "submit" :)

driver.find_element_by_id("submit").click()  #点击submit按钮

 

7.拖放:

element= driver.find_element_by_name("source")

target =driver.find_element_by_name("target")

fromselenium.webdriver import ActionChains

action_chains= ActionChains(driver)

action_chains.drag_and_drop(element,target).perform()

 

8.在不同的窗口和框架之间移动:

driver.switch_to_window("windowName")

通过查看它的javescript或者链接代码获取当前窗口的名字:

<a href="somewhere.html" target="windowName">Click here to open a new window</a>

或者使用“窗口句柄”来打开新窗口:

for handle in driver.window_handles:

driver.switch_to_window(handle)

切换不同的frame:

driver.switch_to_frame("frameName.0.child")

通过“.”操作符你还可以获得子frame,并通过下标指定任意frame。

         driver.switch_to_frame("frameName.0.child")

 

9.访问弹出对话框

    alert = driver.switch_to_alert()

注意prompt()和alert()的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值