一、发生异常 1.打开博客首页,定位“新随笔”元素,此元素id="blog_nav_newpost" 2.为了故意让它定位失败,我在元素属性后面加上xx 3.运行失败后如下图所示,程序在查找元素的这一行发生了中断...: Message: Unable to locate element: {"method":"id","selector":"blog_nav_newpostxx"} 3.从selenium.common.exceptions...= driver.find_element("id", "blog_nav_newpostxx") except NoSuchElementException as msg: print u"...查找元素异常%s"%msg # 点击该元素 # 交流QQ群:232607095 else: element.click() 四、selenium常见异常 1.NoSuchElementException...:元素没有被选中 8.TimeoutException:查找元素超时 五、其它异常与源码 1.在Lib目录下:selenium/common/exceptions有兴趣的可以看看 # Licensed
until(method, message=’ ’) 调用该方法提供的驱动程序作为一个参数,直到返回值为Ture。...until_not(method, message=’ ’) 调用该方法提供的驱动程序作为一个参数,直到返回值为False。...text_to_be_present_in_element_value 判断元素值是否有xx文本信息。...element_located_selection_state_to_be 期望找到一个元素并检查是否选择状态。 alert_is_present 预期一个警告信息。...如果超出了设置的时长,元素还没有被加载则抛NoSuchElementException异常。 implicitly_wait()方法来实现隐式等待,默认单位为秒。
2. python-web自动化-三种等待方式 当有元素定位不到时,比如下拉框,弹出框等各种定位不到时; 一般是两种问题:1 、有frame ;2、没有加等待 下面学习三种等待方式: 2.1 强制等待...title是否包含预期字符串 presence_of_element_located:判断某个元素是否被加到了dom树里,并不代表该元素一定可见 visibility_of_element_located...://www.baidu.com") time.sleep(5) # driver.find_element(By.ID, "kw").send_keys("selenium&python") # driver.find_element...self.assertIn('用户名或密码错误', error_message) # 用assertIn(a,b)方法来断言 a in b '用户名或密码错误'在error_message里...qaz2wsx') # 密码正确,用户名错误 sleep(2) error_message = self.dr.find_element_by_id('ajax-error-box
昙花答道:“谢谢你这个凡人,在你一生问过我3次,但是你毕竟是凡人,而且已经奄奄一息,还怎么帮我,我是因爱而被天罚的花神”。老人笑了笑,说“我是聿明氏,我只是来了断80年前没有结果的那段缘分。...也就是更新appium 到1.6.3以上,java-client版本最好是5.x,jdk要用1.8、selenium要用3.x,其他版本不一定兼容,要自己亲测是否可用 想识别toast,官网是这么说,因此为了不必要的麻烦折腾环境最好还是卸载低版本的...= WebDriverWait(driver, 15).until(lambda x:x.find_element_by_xpath(message)) 48 print(toast_element.text...until(method, message=’’) 调用该方法提供的驱动程序作为一个参数,直到返回值不为 False。...动态函数:lambda x:x+5 X是函数的参数,冒号后面是函数的返回值 封装toast判断 1.单独写一个函数来封装判断是否存在toast消息,存在返回True,不存在返回False
这里介绍selenium第一个函数find_element_by_xpath,这个函数就是根据element的xpath来获取元素的。...,但是如无意外的话,我们只能获得一个报错 selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable...,这里介绍另外一个元素选择函数find_element_by_css_selector browser.find_element_by_css_selector("a[data-dirid='{}']"...: Message: element not visible 碰到这种情况,最好的解决办法是,用selenium直接执行js脚本来调用元素,selenium执行js脚本的函数为execute_script...retry_times: 重试次数 exc_class: 捕捉的异常 notice_message: 提示信息 print_exc: 是否打印错误信息 ''' def wrapper(f):
,在app界面元素中也可以使用id值来区分不同的元素,然后进行定位操作。...selenium元素定位 还记得那年的selenium元素定位吗??...思考 如果安装的版本最新的包,或者升级到了最新的版本,则启动后没有升级弹窗元素该如何处理? 跳过引导页面首次启动和非首次启动场景该如何处理?...报错相关 元素定位报错 selenium.common.exceptions.NoSuchElementException: Message: An element could not be located...【解决方案】检查元素id值是否写错。 Vivo机型无法点击操作 Unhandled rejection Error: Error executing adbExec.
("python大法好").submit() submit方法 还有一些不常用的方法: 获取元素的大小尺寸: driver.find_element_by_id("kw").size 获取元素的文本:...driver.find_element_by_id("kw").text 获取属性值: driver.find_element_by_id("kw").get_attribute('type') 查看元素是否可见...until(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为True。...until_not(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为False。...若直到超出设置时长(1秒)还没有定位到元素,则抛出异常。 下期继续。
如果没有元素匹配id值,将会返回一个NoSuchElementException异常。...如果没有元素匹配name值,会返回NoSuchElementException异常。...该方法将返回第一个匹配这个链接文本值的元素。如果没有元素匹配这个链接文本,将抛出一个NoSuchElementException异常。...如果没有元素匹配,将会返回一个NoSuchElementException异常。...如果没有元素匹配,将会返回一个NoSuchElementException异常。
https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium...10秒,每0.5秒查看条件是否成立 element = WebDriverWait(driver, 10, 0.5).until( # 条件:直到元素加载完成 EC.presence_of_element_located...='') 作用:每隔一段时间(上面的poll_frequency)调用method,直到返回值不为False或不为空 method:需要执行的method message:抛出异常时的文案,会返回 TimeoutException...,表示超时 注意:这个才是常用的,如:定位元素直到不返回空 until_not(self, method, message='') 作用:调用method,直到返回值为False或为空 method...(driver, self.locator) 作用 检查当前DOM树种是否存在该元素(和是否可见没有关系),只要有一个元素加载出来则通过 locator参数 传入一个元组,格式如下 (By.ID, "
书接上文:Selenium Python使用技巧(一)。...():通过链接文本查找元素 find_element_by_partial_link_text():通过链接文本的部分匹配来查找元素 下面显示的是find_element_by_partial_link_text...select_by_index(期望的索引值) select_by_visible_text(“文本信息”) select_by_value(值) 我们从下拉菜单中选择所需元素之前,获取被测元素的ID非常重要...我们使用find_element_by_xpath()方法来定位该元素,并且一旦找到该元素(使用ID),便从下拉菜单中选择该值。...像下拉菜单处理一样,我们使用find_element_by_xpath()方法找到所需的复选框,一旦找到该复选框,就会执行单击操作。 我们将使用Selenium自动化测试,并且选中的复选框。
", element="0.5649563096161541-1")> find_element_by_name find_element_by_xpath find_element_by_link_text...,如果 WebDriver没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常, 换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是...所有元素加载出 text_to_be_present_in_element 某个元素文本包含某文字 text_to_be_present_in_element_value 某个元素值包含某文字 frame_to_be_available_and_switch_to_it...frame加载并切换 invisibility_of_element_located 元素不可见 element_to_be_clickable 元素可点击 staleness_of 判断一个元素是否仍在...DOM,可判断页面是否已经刷新 element_to_be_selected 元素可选择,传元素对象 element_located_to_be_selected 元素可选择,传入定位元组 element_selection_state_to_be
如果没有元素与 id 值匹配,则返回一个 NoSuchElementException 异常。...如果没有元素与 name 值匹配,则返回一个 NoSuchElementException 异常。...该方法返回第一个匹配该链接文本值的元素。如果没有元素与该链接文本匹配,则抛出一个 NoSuchElementException 异常。...如果没有元素匹配,则返回一个 NoSuchElementException 异常。...如果没有元素匹配,则返回一个 NoSuchElementException 异常。
webdriver.Safari() browser = webdriver.Edge() browser = webdriver.Firefox() browser = webdriver.PhantomJS() 我这里没有安装那些浏览器...find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text...等待: 隐式等待 : 当使用了隐式等待执行测试的时候,如果WebDriver没有在DOM中找到元素,将继续等待,超出设定时间则抛出找不到元素的异常,换句话来说,当元素或查找元素没有立即出现的时候,隐式等待将等待一段时间再查找...所有元素加载出 text_to_be_present_in_element 某个元素文本包含某文字 text_to_be_present_in_element_value 某个元素值包含某文字...元素可点击 staleness_of 判断一个元素是否仍在DOM,可判断页面是否已经刷新 element_to_be_selected 元素可选择,传元素对象 element_located_to_be_selected
前言 可能提到自动化测试selenium,大家都会想到用python语言来编写脚本。但我们选择了java语言,因为我相信大部分公司java程序员比python程序员多得多。...() driver.find_element_by_id("kw").send_keys(u"掘金网") driver.find_element_by_xpath("//div[@id='container...(Keys.ENTER) driver.find_element_by_link_text(u"我是如何重构整个研发项目,促进自动化运维DevOps的落地?")....多个相同时,返回第一个,没有找到会抛异常NoSuchElementException WebElement element = driver.findElement(*); 当返回多个时: List...element = driver.findElement(By.xpath("//input[@id='passwd-id']")); 这个最为复杂,最简单的版本是 //标签类型[@属性名=属性值
旧版元素定位 根据id定位 driver.find_element_by_id(id) 根据name定位 driver.find_element_by_name(name) 根据class定位(返回列表...) 根据xpath定位 driver.find_element_by_xpath(xpath) 根据css选择器定位(返回列表) driver.find_element_by_css_selector(...import By # 通过class定位元素 driver.find_elements(By.CLASS_NAME, 'hello') # 也可以不传入By,直接用属性值 driver.find_element...('id', 'world') 元素等待 当元素还没有被加载出来时,会因为定位元素失败而报错,因此需要使用元素等待来保证程序正常运行。...element_located_selection_state_to_be alert_is_present 隐式等待 设置一个超时时间,如果超出这个时间,还有元素没有被加载出来,就会抛出NoSuchElementException
(u'设置').click() driver.find_element_by_xpath("....(u'50') driver.find_element_by_xpath("....(u'50') driver.find_element_by_xpath("....(u'20') driver.find_element_by_xpath("....如下拉框想选择"python语言",对应的value="python",下拉框的效果图为: ?
= driver.find_elements_by_tag_name("input") element = driver.find_element_by_xpath("//input[@id='passwd_id...的页面等待问题 ,动态加载的页面需要时间等待页面上的所有元素都渲染完成,如果在没有渲染完成之前我们就switch_to_或者是find_elements_by_,那么就可能出现元素定位困难而且会提高产生...Selenium Python binding provides some convienence 提供了很多实用的方法。...import By 参数2:值,可能是xpath的值,可能是id,name等,取决于前面是By.XPATH,By.ID究竟是哪种方式去定位元素。...= WebDriverWait(四个参数).until( EC.条件实现((By类定位方式, 定位值), message)) }finally{ // } 另外使用selenium会打开浏览器自动加载页面
'Scala', 'R语言', 'Verilog', '其它语言'] 17 #定位首页网站分类中的编程语言 18 search_class = self.driver.find_element_by_xpath...('//li/a[@href="/cate/2/"]') 37 #定位编程语言下的小类Python 38 seach_small = self.driver.find_element_by_xpath...import webdriver 4 from selenium.common.exceptions import NoSuchElementException 5 from selenium.webdriver.common.by...def test_search_btn(self): 18 # 检查博客园首页有没有找找看按钮 19 self.assertTrue(self.is_element_present...2个列表是否一致(检查博客园首页的菜单名称及URL是否和预期一致) 35 self.assertListEqual(the_menu,menu_data) 36 37 # 找到元素
但是有的时候iframe/frame没有可用的id和name属性值,那么这时候我们可以根据以下方式进行元素定位: #www.testclass.cn #Altumn #2018-11-5 from selenium...有时候在定位元素的时候,明明感觉自己的用法没有错,脚本语法也完全没错,可是为什么定位不到呢?无论用什么定位方法,可以先使用find_elements_by_xxx()来定位一组元素。...元素定位时会抛出NoSuchElementException的错误。怎么判断元素属性是否是动态?很简单,一般看到元素属性里有拼接一串数字的,就很有可能是动态的。...在此介绍一个解决方法,使用xpath根据动态元素属性进行定位: xpath中提供了三个非常好的方法来为我们定位部分属性值: driver.find_element_by_xpath("//input[contains...(@id, 'bt-class')]") # id属性包含'bt-class',并且固定不变; driver.find_element_by_xpath("//input[starts-with
这里列举一下常用的查找元素方法: find_element_by_name find_element_by_id find_element_by_xpath find_element_by_link_text...,'.service-bd li') 同样的在单个元素中查找的方法在多个元素查找中同样存在: find_elements_by_name find_elements_by_id find_elements_by_xpath...,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是0 隐式等待 到了一定的时间发现元素还没有加载,则继续等待我们指定的时间,如果超过了我们指定的时间还没有加载就会抛出异常...(input, button) 上述的例子中的条件:EC.presence_of_element_located()是确认元素是否已经出现了 EC.element_to_be_clickable()是确认元素是否是可点击的...所有元素加载出 text_to_be_present_in_element 某个元素文本包含某文字 text_to_be_present_in_element_value 某个元素值包含某文字 frame_to_be_available_and_switch_to_it
领取专属 10元无门槛券
手把手带您无忧上云