首页 > 其他分享 >selenim使用

selenim使用

时间:2023-06-11 13:56:35浏览次数:33  
标签:name text driver element 使用 alert selenim find

安装篇

设备:MAC

phantomjs:https://phantomjs.org/download.html

安装selenium

pip install selenium

安装 chromedriver

首先确认下载的是 与chrome版本相对应 的chromedriver https://chromedriver.storage.googleapis.com/index.html

把chromedriver.exe文件放入/usr/local/bin下

在Finder中用快捷键cammand+shift+G,输入/usr/local/bin 或者在terminal中输入 open /usr/local/bin 通过命令拷贝

将chromedriver.exe文件放入/usr/local/bin下

 

启动篇

示例代码

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

if __name__ == "__main__":
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    # 打开百度首页
    driver.get("https://www.baidu.com")
    # 点击 新闻 ,新标签页打开百度新闻
    driver.find_element(By.LINK_TEXT, "新闻").click()
    # 在百度首页点击 视频,打开百度视频
    driver.find_element(By.LINK_TEXT, "视频").click()
    time.sleep(2)
    # 关闭百度首页这个标签页
    driver.close()
    time.sleep(2)
    # 关闭浏览器
    driver.quit()

 

遇到问题:

无法打开“chromedriver”,因为无法验证开发者,如有其他问题可参考 https://blog.csdn.net/m0_59868866/article/details/130130126

解法:

因为刚下载的chromedriver 非商店下载,触发MAC安全机制,执行以下命令,找到对应的 driver 文件的存储路径,修改安全属性:

cd /usr/local/bin 
xattr -d com.apple.quarantine chromedriver  

 

使用篇

执行以上代码后会调起一个浏览器自动执行以上操作。

 

alert

alert()方法用于显示带有一条指定消息和一个 确认 按钮的警告框。

示例

driver.get("https://www.runoob.com/try/try.php?filename=tryjs_alert")
driver.switch_to.frame("iframeResult")
driver.find_element(By.XPATH, '//*[@value="显示警告框"]').click()

# 切换到 alert 弹框内
alert = driver.switch_to.alert
alert.accept() # 点击确定

# 退出弹框界面
driver.switch_to.default_content()
assert driver.find_element(By.ID, "submitBTN").text == "点击运行 》"

 

confirm

confirm()方法用于显示一个带有指定消息和确认及取消按钮的对话框。

如果访问者点击"确定",此方法返回 true,否则返回 false。

示例

driver.get("https://www.runoob.com/try/try.php?filename=tryjs_confirm")
driver.switch_to.frame("iframeResult")

# 切换到 alert 弹框内,点击「确定」,断言文案
driver.find_element(By.XPATH, "//body/button").click() # 点我
alert = driver.switch_to.alert
alert.accept() # 点击确定
assert driver.find_element(By.ID, "demo").text == '你按下了"确定"按钮!'

# 切换到 alert 弹框内,点击「取消」,断言文案
driver.find_element(By.XPATH, "//body/button").click() # 点我
alert = driver.switch_to.alert
alert.dismiss() # 点击取消
assert driver.find_element(By.ID, "demo").text == '你按下了"取消"按钮!'

  

prompt

prompt()方法用于显示可提示用户进行输入的对话框。

这个方法返回用户输入的字符串。

支持用户在弹框内输入文本,用于后续处理。

示例

driver.get("https://www.runoob.com/try/try.php?filename=tryjs_prompt")

# 1. 切换到 iframe 内,点击按钮,弹出弹窗
self.driver.switch_to.frame("iframeResult")
self.driver.find_element(By.XPATH, "//body/button").click()

# 2. 弹窗内点击取消,验证获取文本为空,文本展示元素不存在
alert = self.driver.switch_to.alert
alert.dismiss()
assert self.driver.find_element(By.ID, "demo").is_selected() is False

# 3. 弹窗内输入文本点击确定,验证文本展示与输入一致
self.driver.find_element(By.XPATH, "//body/button").click()
alert = self.driver.switch_to.alert
assert alert.text == "请输入你的名字"
alert.send_keys("father")
alert.accept()
assert "father" in self.driver.find_element(By.ID, "demo").text

 

进阶篇

element

变量说明:

1.element.size:获取元素的尺寸。

2.element.text:获取元素的文本。

3.element.tag_name:获取标签名称。

 

相关方法:

1.element.clear():清除文本。

2.element.send_keys(value):输入文字或键盘按键(需导入Keys模块)。

3.element.click():单击元素。

4.element.get_attribute(name):获得属性值

5.element.is_displayed():返回元素结果是否可见(True 或 False)

6.element.is_selected():返回元素结果是否被选中(True 或 False)

7.element.is_enabled():返回元素是否可操作(True 或 False)

8.element.find_element*():定位元素,用于二次定位。

示例
# 元素属性定位(3种)
driver.find_element_by_id(‘id’) 
driver.find_element_by_name('name')
driver.find_element_by_class_name('class_name')
# 超链接定位(2种)
driver.find_element_by_link_text('link_text')
driver.find_element_by_partial_link_text('partial_link_text')
# 元素标签,元素路径,CSS选择器
driver.find_element_by_tag_name('tag_name')
driver.find_element_by_xpath('xpath')
driver.find_element_by_css_selector('css_selector')

 

滚动

向上和向左需要加-
# 向下滚动xx个像素
driver.execute_script('window.scrollBy(0,xx)')
# 向上滚动x个像素
driver.execute_script('window.scrollBy(0,-xx)')
# 向右滚动x个像素
driver.execute_script('window.scrollBy(xx,0)')
# 向左滚动x个像素
driver.execute_script('window.scrollBy(-x,0)')

# 滚动至元素可见
dz=driver.execute_script("arguments[0].scrollIntoView();",要滚动元素的位置)
# 代码如下 
duizhao=driver.find_element(AppiumBy.XPATH,'//*[sstatarts-with(text(),"下一页:")]') 
dz=driver.execute_script("arguments[0].scrollIntoView();",duizhao)

 

获取页面源码

示例

# 执行js得到整个HTML
    html = driver.execute_script("return document.documentElement.outerHTML")

获得整个文档的HTML
    html = driver.find_element_by_xpath("//*").get_attribute("outerHTML")
    # 不要用 driver.page_source,那样得到的页面源码不标准

获取单个元素具体的HTML源文件
    webElement.getAttribute("outerHTML")

 

 

 

示例

 

标签:name,text,driver,element,使用,alert,selenim,find
From: https://www.cnblogs.com/zjbh/p/17472860.html

相关文章

  • phonegap3.1.0自学笔记01_命令行界面(CLI)简单使用
    要使用phonegap的CLI必须首先安装好phonegap,phonegap的安装还请参看我的另外一篇文章:windows7搭建phonegap3Android开发环境。本篇文章介绍CLI的简单使用,由于本人水平有限,还请大侠不要拍砖。 phonegap3.1.0使用命令行去创建应用程序的框架,然后我们可以基于命令行创建的程序再去进......
  • [IOS]开源库RegexKitLite正则表达式的使用
    1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程中。2.工程中添加libicucore.dylibframeworks。友情提醒:一般人导入RegexKitLite编译报错,正是因为没有导入这个类库,加上这个就OK了3.现在所有的nsstring对象就可以调用RegexKitLite中......
  • 使用dbghelp获取调用堆栈--release下的调试方法学
    当软件作为release模式被发布给用户时,当程序崩溃时我们很难去查找原因。常见的手法是输出LOG文件,根据LOG文件分析程序崩溃时的运行情况。我们可以通过SEH来捕获程序错误,然后输出一些有用的信息作为我们分析错误的资料。一般我们需要输出的信息包括:系统信息、CPU寄存器信息、堆栈......
  • 【Linux中断】中断下半部-软中断softirq的原理与使用
    软中断软中断是中断下半部的典型处理机制,是随着SMP的出现应运而生的,也是tasklet实现的基础,软中断的出现是为了满足中断上半部和下半部的区别,使得对时间不敏感的任务延后执行,而且可以在多个CPU上并行执行,使得总的系统效率可以更高。软中断有以下特性:产生后并不是马上可以执行,必......
  • 在Transformers 中使用约束波束搜索引导文本生成
    引言本文假设读者已经熟悉文本生成领域波束搜索相关的背景知识,具体可参见博文如何生成文本:通过Transformers用不同的解码方法生成文本。与普通的波束搜索不同,约束波束搜索允许我们控制所生成的文本。这很有用,因为有时我们确切地知道输出中需要包含什么。例如,在机器翻译任......
  • 如何将CHATGPT 整合到WordPress上使用
    CHATGPT出来有一段时间了,一直想琢磨怎么在我们网站上使用CHATGPT, https://www.3cseller.com/ 使用WordPressAjax请求https://api.openai.com/v1/chat/completions返回openai结果,做一个chatgpt在线问答功能  functionopenai_chat_request(){ $content=$......
  • algorithm库的使用
    算法库(algorithm)1.什么是algorithm?algorithm库装满了好用的库函数,一般由#include<algorithm>包含。可是本蒻蒻还是喜欢万能头(逃2.经典的库函数(1)sort()函数sort(begin,end,cmp);这个函数有一些技术含量,但它只需要传入两个指针或随机迭代器(begin和end)和cmp比较......
  • 使用 dom4j 解析 XML
    http://www.ibm.com/developerworks/cn/xml/x-dom4j.html创建文档本节讨论使用dom4jAPI创建XML文档的过程,并创建示例XML文档catalog.xml。使用import语句导入dom4jAPI类:1.importorg.dom4j.Document;2.importorg.dom4j.DocumentHelper;3.importorg.dom4j.......
  • git subtree的使用简介
    1、gitsubtree的使用简介gitsubtree是一个Git命令,用于在单个Git仓库中管理多个项目。它允许您将一个项目的子目录作为独立的Git仓库处理,同时仍然保持在主仓库中。这使得在不使用子模块的情况下,更容易地将多个项目组合在一个仓库中。以下是gitsubtree的一些常见用法:添加子树......
  • Linux下六个有关file使用的实例
    FILE命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。本文介绍Linux下的六个有关file的实例。简介file的官方解释为:file - determine file type也就是说可以识别文件......