当前位置: 首页 > news >正文

网站开发团队工作总结标准件做网站推广效果怎么样

网站开发团队工作总结,标准件做网站推广效果怎么样,源码下载网站,html网页设计题库自学Python第十八天-自动化测试框架#xff08;二#xff09;#xff1a;DrissionPage、appium DrissionPage环境和安装配置准备工作简单的使用示例控制浏览器收发数据包模式切换 浏览器模式创建浏览器对象访问页面加载模式none 模式技巧 获取页面信息页面交互查找元素ele()… 自学Python第十八天-自动化测试框架二DrissionPage、appium DrissionPage环境和安装配置准备工作简单的使用示例控制浏览器收发数据包模式切换 浏览器模式创建浏览器对象访问页面加载模式none 模式技巧 获取页面信息页面交互查找元素ele() 和 eles()parent() 、child() 和 children()next()、nexts() 和 prev()、prevs()after()、afters() 和 before()、befores()匹配模式查找语法处理 frame简化写法 获取元素信息元素交互 appium DrissionPage 由于 selenium 的缺点过多pyppeteer 使用较为复杂也可以使用 DrissionPage 库来进行自动化测试。 DrissionPage 官方文档 DrissionPage 的优点有 极简的语法规则定位元素更加容易无处不在的等待和自动重试功能使得容错能力大大增加允许反复使用已经打开的浏览器方便调试把 iframe 看作普通元素无需切入切出可以直接查找内容良好的异步支持 环境和安装配置 DrissionPage需要的环境为 操作系统Windows、Linux 或 Mac。python 版本3.6 及以上支持浏览器Chromium 内核如 Chrome 和 Edge 使用 pip 安装 DrissionPage: pip install DrissionPage DrissionPage 包含三种主要页面类。根据需要在其中选择使用。 如果只要控制浏览器导入ChromiumPage。from DrissionPage import ChromiumPage如果只要收发数据包导入SessionPage。from DrissionPage import SessionPageWebPage是功能最全面的页面类既可控制浏览器也可收发数据包。from DrissionPage import WebPage 另外 DrissionPage 还有一些配置工具类 类名描述引入方式ChromiumOptions用于设置浏览器启动参数。这些参数只有在启动浏览器时有用接管已存在的浏览器时是不生效的。from DrissionPage import ChromiumOptionsSessionOptions用于配置SessionPage或WebPages 模式的连接参数。from DrissionPage import SessionOptionsSettings用于设置全局运行配置如找不到元素时是否抛出异常等。from DrissionPage.common import SettingsKeys键盘按键类用于键入 ctrl、alt 等按键。from DrissionPage.common import KeysActions动作链用于执行一系列动作。在浏览器页面对象中已有内置无如特殊需要无需主动导入。from DrissionPage.common import ActionsBy与 selenium 一致的By类便于项目迁移。from DrissionPage.common import Bywait_until可等待传入的方法结果为真from DrissionPage.common import wait_untilmake_session_ele从 html 文本生成ChromiumElement对象from DrissionPage.common import make_session_eleconfigs_to_here把配置文件复制到当前路径from DrissionPage.common import configs_to_hereget_blob获取指定的 blob 资源from DrissionPage.common import get_blobElementNotFoundError异常类全部在路径DrissionPage.errors里from DrissionPage.errors import ElementNotFoundError 另外 DrissionPage 还有一些衍生对象例如 Tab、Element 等对象是由 Page 对象生成的开发过程中需要类型判断时需要导入这些类型。 from DrissionPage.items import SessionElement from DrissionPage.items import ChromiumElement from DrissionPage.items import ShadowRoot from DrissionPage.items import NoneElement from DrissionPage.items import ChromiumTab from DrissionPage.items import WebPageTab from DrissionPage.items import ChromiumFrame准备工作 如果只使用收发数据包功能无需任何准备工作。 如果要控制浏览器需设置浏览器路径。程序默认设置控制 Chrome所以下面用 Chrome 演示。如果要使用 Edge 或其它 Chromium 内核浏览器设置方法是一样的。 尝试启动浏览器 默认状态下程序会自动在系统内查找 Chrome 路径。执行以下代码浏览器启动并且访问了项目文档说明可直接使用跳过后面的步骤即可。 from DrissionPage import ChromiumPagepage ChromiumPage() page.get(http://g1879.gitee.io/DrissionPageDocs)设置路径 如果上面的步骤提示出错说明程序没在系统里找到 Chrome 浏览器。可用以下其中一种方法设置设置会持久化记录到默认配置文件之后程序会使用该设置启动。 设置方法有2种: 方法一新建一个临时 py 文件并输入以下代码填入您电脑里的 Chrome 浏览器可执行文件路径然后运行。 from DrissionPage import ChromiumOptionspath rD:\Chrome\Chrome.exe # 请改为你电脑内Chrome可执行文件路径 ChromiumOptions().set_browser_path(path).save()这段代码会把浏览器路径记录到配置文件今后启动浏览器皆以新路径为准。另外如果是想临时切换浏览器路径以尝试运行和操作是否正常可以去掉 .save()以如下方式结合第1️⃣步的代码。 from DrissionPage import ChromiumPage, ChromiumOptionspath rD:\Chrome\Chrome.exe # 请改为你电脑内Chrome可执行文件路径 co ChromiumOptions().set_browser_path(path) page ChromiumPage(co) page.get(http://g1879.gitee.io/DrissionPageDocs)方法二在命令行输入以下命令路径改成自己电脑里的 dp -p D:\Chrome\chrome.exe 注意要先使用 cd 命令定位到项目路径 简单的使用示例 DrissionPage 的三个主要的类 ChromiumPage 、SessionPage 和 WebPage 分别用于主要的三种模式浏览器模式、数据包模式、混合模式。 控制浏览器 DrissionPage 可以类似于 selenium 一样直接控制浏览器。 from DrissionPage import ChromiumPage# 创建页面对象并启动或接管浏览器 page ChromiumPage() # 跳转到登录页面 page.get(https://gitee.com/login) # 定位到账号文本框获取文本框元素 ele page.ele(#user_login) # 输入对文本框输入账号 ele.input(您的账号) # 定位到密码文本框并输入密码 page.ele(#user_password).input(您的密码) # 点击登录按钮 page.ele(value登 录).click()收发数据包 DrissionPage 可以类似于 requests 一样直接收发数据包获取页面代码并使用特定的解析语法解析文本获取数据。 from DrissionPage import SessionPage# 创建页面对象 page SessionPage()# 爬取3页 for i in range(1, 4):# 访问某一页的网页page.get(fhttps://gitee.com/explore/all?page{i})# 获取所有开源库a元素列表links page.eles(.title project-namespace-path)# 遍历所有a元素for link in links:# 打印链接信息print(link.text, link.link)模式切换 DrissionPage 还能在两种模式间切换执行。切换模式是用来应付登录检查很严格的网站可以用浏览器处理登录再转换模式用收发数据包的形式来采集数据。 from DrissionPage import WebPage# 创建页面对象 page WebPage() # 访问网址 page.get(https://gitee.com/explore) # 查找文本框元素并输入关键词 page(#q).input(DrissionPage) # 点击搜索按钮 page(t:buttontx():搜索).click() # 等待页面加载 page.wait.load_start() # 切换到收发数据包模式 page.change_mode() # 获取所有行元素 items page(#hits-list).eles(.item) # 遍历获取到的元素 for item in items:# 打印元素文本print(item(.title).text)print(item(.desc).text)print()浏览器模式 用ChromiumPage()创建页面对象。根据不同的配置可以接管已打开的浏览器也可以启动新的浏览器。程序结束时被打开的浏览器不会主动关闭以便下次运行程序时使用由VSCode启动的会被关闭。新手在使用无头模式时需注意程序关闭后其实浏览器进程还在只是看不见。 ChromiumPage和WebPage对象为单例每个浏览器只能有一个该对象。对同一个浏览器重复使用ChromiumPage获取的都是同一个对象。 创建浏览器对象 from DrissionPage import ChromiumPagepage ChromiumPage()创建ChromiumPage对象时会在指定端口启动浏览器或接管该端口已有浏览器。默认情况下程序使用 9222 端口浏览器可执行文件路径为’chrome’。如路径中没找到浏览器可执行文件Windows 系统下程序会在注册表中查找路径。 ChromiumPage创建时可接收三个参数 初始化参数类型默认值说明addr_or_optsstr int ChromiumOptionsNone浏览器启动配置或接管信息。传入 ‘ip: port’ 字符串、端口数字或ChromiumOptions对象时按配置启动或接管浏览器为None时使用配置文件配置启动浏览器tab_idstrNone要控制的标签页 id为None则控制激活的标签页timeoutfloatNone整体超时时间为None则从配置文件中读取默认10 如果需要已指定方式启动浏览器可使用ChromiumOptions。它是专门用于设置浏览器初始状态的类内置了常用的配置。 # 导入 ChromiumOptions from DrissionPage import ChromiumPage, ChromiumOptions# 创建浏览器配置对象指定浏览器路径 co ChromiumOptions().set_browser_path(rD:\chrome.exe) # 设置不加载图片、静音、禁用js co.no_imgs(True).mute(True)no_js(True) co.incognito() # 匿名模式(无痕模式) co.headless() # 无头模式 # 另外也支持 Chromium 内核浏览器的一系列启动配置参数 co.set_argument(--no-sandbox) # 无沙盒模式 co.set_argument(--window-size, 800,600) # 设置初始窗口大小 co.set_argument(--start-maximized) # 设置启动时最大化 co.set_argument(--guest) # 使用来宾模式打开浏览器 # 已经配置的参数也可以删除 co.remove_argument(--start-maximized) co.remove_argument(--window-size) # 用该配置创建页面对象 page ChromiumPage(addr_or_optsco)访问页面 get() 方法用于跳转到一个网址 from DrissionPage import ChromiumPagepage ChromiumPage() page.get(https://www.baidu.com)该方法可以接收5个参数并返回一个 bool 值表示是否连接成功 参数名称类型默认值说明urlstr必填目标 url可指向本地文件路径show_errmsgboolFalse连接出错时是否显示和抛出异常retryintNone重试次数为None时使用页面参数默认 3intervalfloatNone重试间隔秒为None时使用页面参数默认 2timeoutfloatNone加载超时时间秒 加载模式 加载模式是指程序在页面加载阶段的行为模式有以下三种 normal()常规模式会等待页面加载完毕超时自动重试或停止默认使用此模式eager()加载完 DOM 或超时即停止加载不加载页面资源none()超时也不会自动停止除非加载完成 前两种模式下页面加载过程会阻塞程序直到加载完毕才执行后面的操作。none()模式下只在连接阶段阻塞程序加载阶段可自行根据情况执行stop_loading()停止加载。这样提供给用户非常大的自由度可等到关键数据包或元素出现就主动停止页面加载大幅提升执行效率。 可以在配置对象中进行设置 from DrissionPage import ChromiumOptions, ChromiumPageco ChromiumOptions().set_load_mode(none) page ChromiumPage(co)也可以在运行中设置 from DrissionPage import ChromiumPagepage ChromiumPage() page.set.load_mode.eager() page.get(https://g1879.gitee.io/drissionpagedocs)none 模式技巧 跟监听器配合可在获取到需要的数据包时主动停止加载。 from DrissionPage import ChromiumPagepage ChromiumPage() page.set.load_mode.none() # 设置加载模式为nonepage.listen.start(api/getkeydata) # 指定监听目标并启动监听 page.get(http://www.hao123.com/) # 访问网站 packet page.listen.wait() # 等待数据包 page.stop_loading() # 主动停止加载 print(packet.response.body) # 打印数据包正文跟元素查找配合可在获取到某个指定元素时主动停止加载。 from DrissionPage import ChromiumPagepage ChromiumPage() page.set.load_mode.none() # 设置加载模式为nonepage.get(http://www.hao123.com/) # 访问网站 ele page.ele(中国日报) # 查找text包含“中国日报”的元素 page.stop_loading() # 主动停止加载 print(ele.text) # 打印元素text可等待到页面到达某种状态时主动停止加载。比如多级跳转的登录可等待 title 变化到最终目标网址时停止。 from DrissionPage import ChromiumPagepage ChromiumPage() page.set.load_mode.none() # 设置加载模式为nonepage.get(http://www.hao123.com/) # 访问网站 page.wait.title_change(hao123) # 等待title变化出现目标文本 page.stop_loading() # 主动停止加载获取页面信息 有一些常用的属性和方法能够获取页面的信息 html 此属性返回当前页面 html 文本。返回类型strjson 此属性把请求内容解析成 json并把这些数据转换为dict格式。需注意如果是API返回的json字符串请使用 SessionPage 对象而不是 ChromiumPage。title 此属性返回当前页面title文本。返回类型struser_agent 此属性返回当前页面 user agent 信息。返回类型strsave(path:Union[str,Path]None, name:strNone, as_pdf:boolFalse,**kwargs)-Union[str, bytes] 当前页面保存为文件同时返回保存的内容。接收 path、name和as_pdf 三个参数。如果path和name参数都为None只返回内容不保存文件。path为None保存到当前路径name为None则使用 title 的值。as_pdf为True保存为pdf文件默认False保存为 mhtml。另外如果 as_pdf 为True返回值为文件字节数据。url 此属性返回当前访问的 url。返回类型strtab_id 此属性返回当前标签页的 id。返回类型strstates.is_loading 此属性返回页面是否正在加载状态。返回类型boolstates.is_alive 此属性返回页面是否仍然可用标签页已关闭则返回False。states.ready_state 此属性返回页面当前加载状态有 4 种connecting 网页连接中loading表示文档还在加载中interactiveDOM 已加载但资源未加载完成complete所有内容已完成加载。states.has_alert 此属性以布尔值返回页面是否存在弹出框。cookies(as_dict:boolFalse, all_domains:boolFalse, all_info:boolFalse)-Union[dict, list] 此方法返回 cookies 信息。接收3个参数默认均为Falseas_dict为True时返回字典类型为False返回 cookie 组成的列表all_domains是否返回所有 cookies为False只返回当前 url 的all_info返回的 cookies 是否包含所有信息False时只包含name、value、domain信息session_storage(item:strNone)-Union[dict, str] 此方法用于获取 sessionStorage 信息可获取全部或单个项。该方法接收一个默认为 None 的 str 型参数是要获取的项目名称为None则返回全部项目组成的字典。local_storage(item:strNone)-Union[dict, str] 此方法用于获取 localStorage 信息可获取全部或单个项。参数和使用同 session_storage()。 页面交互 一个 Tab 对象ChromiumTab和WebPageTab控制一个浏览器的标签页是页面控制的主要单位。ChromiumPage和WebPage也控制一个标签页只是它们增加了一些浏览器总体控制功能。 get(url:str, show_errmsg:boolFalse, retry:intNone, interval:floatNone, timeout:floatNone)-bool 该方法用于跳转到一个网址。当连接失败时程序会进行重试。back(steps:int1) 此方法用于在浏览历史中后退若干步。可以接收1个类型为 int 的参数默认值为1为后退步数。forward(steps:int1) 此方法用于在浏览历史中前进若干步。参数和用法同 back()refresh() 此方法用于刷新当前页面可以接收一个默认值为 False 的 bool 参数刷新时是否忽略缓存。stop_loading() 此方法用于强制停止当前页面加载。set.blocked_urls(urls:Union[str, list, tuple, None]) 此方法用于设置忽略的连接接收一个必填的参数类型可以为 str、list、tuple、None需要忽略的 url可以使用通配符*传入 None 时清空已设置项。例如不加载css文件page.set.blocked_urls(*.css*)run_js(script, *args, as_expr:boolFalse, timetout:floatNone)-Any 此方法用于执行 js 脚本。参数script是js脚本文本或脚本路径*args为传入js的参数按顺序对应为arguments[0]、arguments[1]…as_expr是否作为表达式运行为True时args参数无效timetout是脚本超时时间为None则使用页面timeouts.script设置。返回值为脚本执行结果。run_js_loaded(script, *args, as_expr:boolFalse, timetout:floatNone)-Any 此方法用于运行 js 脚本执行前等待页面加载完毕。参数和使用同 run_js()set.cookies(cookies:Union[RequestsCookieJar, list, tuple, str, dict]) 此方法用于设置 cookie。可以接收CookieJar、list、tuple、str、dict格式的cookies。set.cookies.clear() 清除所有 cookie。set.cookies.remove(name:str, url:strNone, domain:strNone, path:strNone) 删除一个 cookie。参数分别是cookie的相应字段set.session_storage(item:str, value:Union[str, False]) 设置或删除某项 sessionStorage 信息。item是要设置的项value为str时是设置的值为False时表示删除该项。set.local_storage(item:str, value:Union[str, False]) 设置或删除某项 localStorage 信息。参数和使用同 set.session_storage()scroll.to_top() 用于滚动页面到顶部水平位置不变。scroll.to_bottom() 用于滚动页面到底部水平位置不变。scroll.to_see(loc_or_ele:Union[str, tuple, ChromiumElement], center:Union[bool, None]None) 滚动页面直到元素可见。参数loc_or_ele是元素的定位信息可以是元素、定位符参数center是否尽量滚动到页面正中为None时如果被遮挡则滚动到页面正中。set.scroll.wait_complete(on_off:boolTrue) 设置滚动后是否等待滚动结束。因为滚动时间不确定容易导致程序不稳定。此项可以等待滚动结束再继续执行。handle_alert(accept:Union[bool, None]True, send:strNone, timeout:floatNone, next_one:boolFalse)-Union[str, False] 处理提示框。能够设置等待时间等待提示框出现才进行处理若超时没等到提示框返回False。也可只获取提示框文本而不处理提示框。 还可以处理下一个出现的提示框。参数accept为提示框的处理方式True表示确认False表示取消None不会按按钮但依然返回文本值send处理 prompt 提示框时输入文本timeout等待提示框出现的超时时间为None时使用页面整体超时时间next_one是否处理下一个出现的弹窗为True时timeout参数无效。返回值为提示框内容文本或False未等到提示框。set.auto_handle_alert(on_off:boolTrue, accept:boolTrue) 设置自动处理提示框使提示框不会弹窗而直接被处理掉。参数on_off表示开关设置accept表示处理使用确定还是取消。quit(timeout:float5, force:boolTrue) 关闭浏览器只能使用于Page对象而不能用于Tag对象。参数timeout为等待浏览器关闭超时时间秒force为关闭超时是否强制终止进程。 查找元素 DrissionPage使用了一套简洁的语法用于查找元素支持内置等待、链式查找同时也支持 css selector、xpath、selenium 原生的 loc 元组。 ele() 和 eles() ele() 方法和 eles() 方法类似区别在于后者返回多个元素列表前者可以接收一个默认值为 1 的index参数表示返回获取的第几个匹配元素(可以为负值表示倒数)。 parent() 、child() 和 children() 这三种方法为查找元素的父子元素参数中可以接收查询语法。parent() 查询中可以接收数字表示第几级父元素。child() 接收参数 index表示返回第几个匹配到的元素。 next()、nexts() 和 prev()、prevs() 这四种方法用于查找当前元素的前 / 后的同级节点。可以使用查询语法单个查询也支持查找第几个同级节点。 after()、afters() 和 before()、befores() 这四种方法用于查找当前元素之前之后的节点范围不止同级节点而是整个 DOM 文档。 匹配模式 匹配模式指某个查询中匹配条件的方式有精确匹配、模糊匹配、匹配开头、匹配结尾四种。大部分查找语法默认使用精确匹配。 精确匹配 表示精确匹配匹配完全符合的文本或属性。例如获取name属性为’row1’的元素ele page.ele(namerow1)模糊匹配 : 表示模糊匹配匹配含有指定字符串的文本或属性。例如获取name属性包含’row1’的元素ele page.ele(name:row1)匹配开头 ^ 表示匹配开头匹配开头为指定字符串的文本或属性。例如获取name属性以’row1’开头的元素ele page.ele(name^ro)匹配结尾 $ 表示匹配结尾匹配结尾为指定字符串的文本或属性。例如获取name属性以’w1’结尾的元素ele page.ele(name$w1) 查找语法 DrissionPage 支持css selector、xpath、selenium 原生的 loc 元组这里只列举单独使用的查找语法。 id 匹配符 # 表示id属性只在语句最前面且单独使用时生效可配合匹配模式使用。例如在页面中查找id属性为one的元素ele1 page.ele(#one)在ele1元素内查找id属性包含ne文本的元素ele2 ele1.ele(#:ne) class 匹配符 . 表示class属性只在语句最前面且单独使用时生效可配合匹配模式使用。因为默认精确匹配所以如果某元素有多个类名必须写 class 属性的完整值类名的顺序也不能变如果需要只匹配多个类名中的一个可以使用模糊匹配符 .:。例如查找class属性为p_cls的元素ele2 ele1.ele(.p_cls)精确查找class属性为p_cls1 p_cls2 的元素ele2 ele1.ele(.p_cls1 p_cls2 )模糊查找class属性含有类名 ‘p_cls2’ 的元素ele2 ele1.ele(.:p_cls2)单属性匹配符 表示匹配某一个属性。例如查找name属性为row1的元素ele2 ele1.ele(namerow1)查找有name属性的元素ele2 ele1.ele(name)查找没有任何属性的元素ele2 ele1.ele()查找email属性为abcdef.com的元素有多个也不会重复处理ele2 ele1.ele(emailabcdef.com)属性中有特殊字符的情形匹配abcdef属性等于v的元素ele2 ele1.ele(css:div[abc\defv])多属性与匹配符 匹配同时符合多个条件的元素时使用每个条件前面添加作为开头。例如查找name属性为row1且class属性包含cls文本的元素ele2 ele1.ele(namerow1class:cls)多属性或匹配符| 匹配符合多个条件中任一项的元素时使用每个条件前面添加|作为开头。用法与一致需注意不能同 同时出现在语句中。属性否定匹配符! 用于否定某个条件可与或|混用也可单独使用。文本匹配符 text 要匹配的文本查询字符串如开头没有任何关键字也表示根据传入的文本作模糊查找。如果元素内有多个直接的文本节点精确查找时可匹配所有文本节点拼成的字符串模糊查找时可匹配每个文本节点。例如查找文本为“第二行”的元素ele2 ele1.ele(text第二行)查找文本包含“第二”的元素ele2 ele1.ele(text:第二)。文本匹配符 text() 作为查找属性时使用的文本关键字必须与或配合使用。类型匹配符 tag 表示元素的标签只在语句最前面且单独使用时生效可与、或|配合使用。tag:与tag效果一致没有tag^和tag$语法。css selector 匹配符 css 表示用 css selector 方式查找元素。css:与css效果一致没有css^和css$语法。xpath 匹配符 xpath 表示用 xpath 方式查找元素。xpath:与xpath效果一致没有xpath^和xpath$语法。另外元素对象的ele()支持完整的 xpath 语法如能使用 xpath 直接获取元素属性字符串类型。selenium 的 loc 元组 查找方法能直接接收 selenium 原生定位元组进行查找便于项目迁移。例如page.ele((By.XPATH, //p[classp_cls])) 处理 frame 虽然 frame 也能够使用 ele() 方法查找到并且可以穿透 iframe 标签进行操作(页面对象支持跨级查找元素对象并不支持)但是不建议这样使用。建议使用 Page 对象的 get_frame() 方法来获取和操作 frame元素。 例如 获取页面中第一个iframe元素: iframe page.get_frame(1)获取页面id为theFrame的iframe元素对象: iframe page.get_frame(#theFrame) 对于 frame 元素可以看为一个特殊的元素对象或页面对象来对待。可以同时操作多个 frame无需切换。 简化写法 为进一步精简代码定位语法都可以用简化形式来表示使语句更短链式操作时更清晰。 原操作简化后说明page.ele()page()页面对象定位精简page.ele(idxxx)page(#xxx)id查找精简page.ele(classxxx)page(.xxx)class查找精简page.ele(textxxx)page(txxxx)text查找精简page.ele(text()xxx)page(tx()xxx)text()查找精简page.ele(tag:img)page(t:img)tag 查找精简page.ele(xpath://xxxx)page(x://xxxx)xpath查找精简page.ele(css:xxx)page(c:xxxx)css 查找精简 获取元素信息 一些常用的属性和方法能够获取常用的元素数据信息 tag 此属性返回元素的标签名text 此属性返回元素内所有文本组合成的字符串attrs 此属性以字典形式返回元素所有属性及值attre() 此方法返回元素某个 attribute 属性值link 此方法返回元素的 href 属性或 src 属性page 此属性返回元素所在的页面对象style() 该方法返回元素 css 样式属性值可获取伪元素的属性。states.is_checked 此属性以布尔值返回表单单选或多选元素是否选中。states.is_selected 此属性以布尔值返回select元素中的项是否选中。states.is_enabled 此属性以布尔值返回元素是否可用。states.is_displayed 此属性以布尔值返回元素是否可见。src() 此方法用于返回元素src属性所使用的资源。base64 的可转为bytes返回其它的以str返回。无资源的返回None。 元素交互 click() 用于左键点击元素。click.right() 此方法实现右键单击元素。click.at() 此方法用于带偏移量点击元素偏移量相对于元素左上角坐标。不传入offset_x和offset_y时点击元素中间点。click.to_upload() 此方法用于点击元素触发文件选择框并把指定的文件路径添加到网页。参数为文件上传路径click.to_download() 此方法用于点击元素触发下载并返回下载任务对象。参数为文件保存路径clear() 清空元素文本input() 向元素输入文本或组合键也可用于输入文件路径到上传控件。可选择输入前是否清空元素。组合键需要导入类 from DrissionPage.common import Keys例如ele.input((Keys.CTRL, a, Keys.DEL)) drag() 拖拽元素到相对于当前的一个新位置drag_to() 拖拽元素到另一个元素上或一个坐标上hover() 模拟鼠标悬停在元素上可接受偏移量偏移量相对于元素左上角坐标run_js() 用于对元素执行 js 代码代码中用this表示元素自己。类似于页面中的 run_js() appium
http://www.pierceye.com/news/237694/

相关文章:

  • wordpress建站怎么上传网站没有备案信息该怎么做
  • 沈阳网站推广有什么技巧软件开发工具通常也称为什么工具
  • 黑龙江龙采做网站如何网站建设制作解决方案
  • 百度推广自己做网站吗网页设计软件下载网站
  • wordpress内核源码分析南宁网站优化推广
  • 物流网站做那个好服务器怎么安装WordPress
  • 网站开发怎么兼容浏览器中国优秀设计网站有哪些内容
  • 黄冈网站官方登录平台做网站的条件
  • 潍坊网站建设推广公司网站建设类的手机软件
  • 建设小学网站建设网站代理
  • 怎么查看网站根目录网站建设费记什么科目
  • 文昌市规划建设管理局网站网站与个人网站
  • 昆明网站建设推荐q479185700上墙现在最火的推广平台有哪些
  • 长兴县城乡建设局网站wordpress的留言功能
  • 建设企业网站地址asp.net 4.0网站开...
  • 制作个人网站步骤提升学历励志语录
  • 福州建站服务管理页面布局标准格式
  • 做一个公司网站一般需要多少钱营销型网站功能表
  • 为什么菜市场不可以做网站河南阿里巴巴网站建设
  • asp.net动态的网站开发手机海报制作免费软件
  • 网站建设前准备龙岗网站优化公司案例
  • 做流量哪个网站好滨州j建设局网站投诉电话
  • 空白网站怎么建wordpress 邮箱订阅
  • 乡镇网站建设自查报告做企业门户网站要准备哪些内容
  • 百度做推广一般要多少钱相城seo网站优化软件
  • 博客和网站的区别贵阳网站推广优化公司
  • 专业做公司网站的机构时彩网站开发
  • 网站 建设设计深圳网站建设交易
  • 网站建设氵金手指下拉十二网页设计有啥教程
  • 物流企业网站建设策划书6wordpress 搜索 很慢