网站开发完要怎么部署,百度验证网站有什么用,整合网络营销策划,智能网站建设商家1. 定位页面#xff08;多窗口切换#xff09;
WebDriver提供了处理多个窗口的能力#xff0c;这是通过使用“WebDriver.switchTo.window()”方法来切换到已知名称的窗口来实现的。如果名称未知#xff0c;您可以使用“WebDriver.getWindowHandles()”获取已知窗口列表。您…1. 定位页面多窗口切换
WebDriver提供了处理多个窗口的能力这是通过使用“WebDriver.switchTo.window()”方法来切换到已知名称的窗口来实现的。如果名称未知您可以使用“WebDriver.getWindowHandles()”获取已知窗口列表。您可以将句柄传递给switchTo.window()。 获取当前窗口句柄 driver.current_window_handle 返回的所有窗口的句柄到当前会话 driver.window_handles 切换窗口可以实现在不同的窗口之间切换。 switch_to.window()
示例代码
# 模拟按下回车键进行搜索
search_box.send_keys(Keys.RETURN)
# 等待页面加载
driver.implicitly_wait(15)
# 切换新窗口
window_handles driver.window_handles
driver.switch_to.window(window_handles[1])2. 定位界面元素
WebDriver中的find_element() 方法用来查找元素并返回 WebElement 对象。其中find_element是直接WebElement 对象find_elements是直接WebElement 对象的列表list也就是多个对象需要注意。
详细内容参考官方文档https://www.selenium.dev/documentation/webdriver/elements/。举例介绍如下 html
body
style
.information {background-color: white;color: black;padding: 8px;
}
/styleh2Contact Selenium/h2form action/action_page.phpinput typeradio namegender valuem /Male nbsp;input typeradio namegender valuef /Female brbrlabel forfnameFirst name:/labelinput classinformation typetext idfname namefname valueJanebrbrlabel forlnameLast name:/labelinput classinformation typetext idlname namelname valueDoebrbrlabel fornewsletterNewsletter:/labelinput typecheckbox namenewsletter value1 /brbrinput typesubmit valueSubmit
/form pTo know more about Selenium, visit the official page
a href www.selenium.devSelenium Official Page/a
/pdiv idadddiv增加div看看/div/body
/html定位方式By说明idBy.ID定位ID属性与搜索值匹配的元素nameBy.NAME定位NAME属性与搜索值匹配的元素class_nameBy.CLASS_NAME定位具有包含搜索值的类名的元素(不允许使用复合类名)tag_nameBy.TAG_NAME定位标签名与搜索值匹配的元素link_textBy.LINK_TEXT定位可见文本与搜索值匹配的锚点元素partial_link_textBy.PARTIAL_LINK_TEXT定位可见文本部分与搜索值匹配的锚点元素css_selectorBy.CSS_SELECTOR定位与CSS选择器匹配的元素xpathBy.XPATH定位与XPath表达式匹配的元素
class name
HTML页面的Web元素可以具有class属性。在上面的HTML代码片段中可以看到一个示例。我们可以使用Selenium中的class name定位器来识别这些元素。 driver webdriver.Chrome()driver.find_element(By.CLASS_NAME, information)
css selector
CSS是用于样式化HTML页面的语言。我们可以使用css selector定位器策略来识别页面上的元素。如果元素具有id,则创建定位器为css #id。否则我们遵循的格式是css [attributevalue]。让我们从上面的HTML代码片段中看一个示例。我们将使用css为First Name文本框创建定位器。 driver.find_element(By.CSS_SELECTOR, #fname)xpath
HTML文档可以被视为XML文档然后我们可以使用xpath来定位感兴趣的元素。XPath是从文档的根开始遍历的路径可以是绝对XPath或相对XPath。例如/html/form/input[1]将返回男性单选按钮。或者XPath也可以是相对的例如//input[name‘fname’]将返回名字文本框。让我们使用xpath为女性单选按钮创建定位器。 driver.find_element(By.XPATH, //input[valuef])3. 操作
3.1. 键盘操作
键盘操作是指与网页交互的任何键输入设备的一种表示。使用键盘只能完成两项操作按下一个键和释放按下的键。除了支持ASCII字符外每个键盘按键都有指定的序列来表示可以按下或释放。
例如输入关键字按下回车键搜索。 # 在搜索框中输入关键词search_box.send_keys(selenium)# 模拟按下回车键进行搜索search_box.send_keys(Keys.RETURN)3.2. 鼠标键操作
鼠标操作是指与网页交互的任何指针设备的一种表示。使用鼠标只能完成三项操作按下一个按钮、释放按下的按钮和移动鼠标。Selenium提供了方便的方法将这些动作以最常见的方式组合在一起。
这种方法结合了将鼠标移动到元素的中心并按下和释放鼠标左键的动作否则称为“点击”。 # 模拟用鼠标点击链接操作clickable driver.find_element(By.LINK_TEXT, 哈尔滨)ActionChains(driver).click(clickable ).perform()3.3. 界面加载等待
driver.implicitly_wait(n)n是设置时长单位为秒。
隐性等待设置了一个时间在一段时间内网页是否加载完成如果完成了就进行下一步在设置的时间内没有加载完成则会报超时加载。
另外一点隐性等待的设置是全局性的在开头设置过之后整个的程序运行过程中都会有效都会等待页面加载完成不需要每次设置一遍。
4. 小结
完整代码示例
from selenium import webdriver
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import Bydriver webdriver.Chrome() url https://www.****
driver.get(url)
driver.maximize_window()search_box driver.find_element(By.LINK_TEXT, 哈尔滨)
ActionChains(driver).click(search_box).perform()
driver.implicitly_wait(10)# 获取搜索框元素
search_box driver.find_element(By.ID ,search-input) # 按ID查询# 在搜索框中输入关键词
search_box.send_keys(群力家园(C区))
# 模拟按下回车键进行搜索
search_box.send_keys(Keys.RETURN)# 切换新窗口
window_handles driver.window_handles
driver.switch_to.window(window_handles[1])
# 定位详细链接
xpath //*[idesfMain]/section/div/div/a
driver.find_element(By.XPATH, xpath).click()
# 再切换窗口
window_handles driver.window_handles
driver.switch_to.window(window_handles[3])
# 获取详细数据
selector2 #__layout div div.props-main.w-1170 div.props-body div.props-right div.maininfo div.info div
search_results2 driver.find_element(By.CSS_SELECTOR, selector2)
search_results2.text使用Selenium工具可以模拟人工操作应用完成相应工作以此提高工作效率。从技术角度来看Selenium还是比较容易实现的。
参考
测试界的飘柔. Selenium实现多页面切换. CSDN博客. 2023.07 肖永威. 基于Selenium技术方案的爬虫入门实践. CSDN博客. 2023.08