什么样的是动态id呢? 动态id就是第一次点击显示的id与二次点击显示的不一样,一般是元素属性中包含一段数字的这种情况. 类似这种: 1 <input type="button" value="选择" id="btncussel1452"> 这种情况,个人觉得比较简单的定位方法是用XPath来根据部分元素属性定位即模糊定位: 有三种情况: 1  driver.find_element_by_xpath("//input[st…
Python selenium PO  By.XPATH定位元素报错 如下代码经常报错: # 首页的“新建投放计划”按钮 new_ads_plan = (By.XPATH, "//*[text()='百度新闻']/..") print(type(self.new_ads_plan)) self.driver.find_element(self.new_ads_plan).click() 运行经常报错:selenium.common.exceptions.WebDriverExcepti…
世界上最远的距离大概就是明明看到一个页面元素矗在那里,但是我却定位不到!! selenium定位元素的方法有很多种,像是通过id.name.class_name.tag_name.link_text等等,但是这些方法局限性太大,拿id属性来说,首先一定不会每个元素都有id属性,其次元素的id属性也不一定是固定不变的.所以这些方法了解一下即可,我们真正需要熟练掌握的是通过xpath和css定位,一般只要掌握一种就可以应对大部分定位工作了. 下面总结一下xpath的定位方法,结合自己练习的实例加深一…
感谢:小琰子 Python+Selenium 脚本中的一些js的用法汇总: 1.滚动条 driver.set_window_size(500,500) js = "window.scrollTo(0,200)" #左:距左边横滚.右:距上边竖滚driver.execute_script(js) 2.获取元素的值 button = driver.find_element_by_css_selector("#su") #定位按钮 input = driver.find_…
一.前言 总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询: 二.直接定位(XPath) 使用Firebug找到需要定位到的元素,直接右键复制XPath,使用find_element_by_xpath定位: driver = webdriver.Firefox() driver.get("https://www.baidu.com/") driver.find_element_by_xpath().click() 三.间接定位(Sel…
我们工作中经常用到的定位方式有八大种:id name class_name tag_name link_text partial_link_text xpath css_selector 本篇内容主要说我们功能最强大的xpath定位 1.xpath绝对路径定位: 语法:直接页面所有标签一级一级向下指定,直到找到自己定位的元素:例如:html/body/div/div/span/input 2.根据标签属性进行定位: 语法://标签名[@属性名="属性值"]  标签名可以使用*代替,*表…
使用firefox浏览器,查看页面元素,我们以“百度网页”为示例 一.ID定位元素    利用find_element_by_id()方法来定位网页元素对象 ①.定位百度首页,输入框的元素 ②.编写示例代码信息如下: #coding=utf-8 from selenium import webdriver driver=webdriver.Chrome() #打开chrome,如果没有安装chrome,换成firefox或ie浏览器 driver.maximize_window() #最大化浏览…
1.class属性有空格  (已验证) 当classname 中存在空格的时候,直接使用find_element_by_class_name时,会显示定位失败,此时,需要将classname中的空格替换成英文的点“.”,如下图: 此时如果使用 find_element_by_class_name("link detail"),则提示无法定位该元素 如果使用英文点替换,则可以正常定位 find_element_by_class_name("link.detail")…
场景 处理frame需要用到2个方法,分别是switch_to_frame(name_or_id_or_frame_element)和switch_to_default_content() 如何理解这个switch_to_frame(name_or_id_or_frame_element)方法呢?可以简单记忆一下,如果这个frame有name和id属性那么就用这两个属性就好,如果没有的话可以先用find_element_by_xxx方法找到这个frame元素,然后把这个元素传进去,这也是可行的.…
对于有些元素每次点击都是动态的  即每次都是不一样的  对于这种元素我们可以采用与他相关的其他静态的元素定位 比如 iframe 这个元素的id是动态的 每次都在变化 第一种就是我们观察下 是整个都是变化的还是部分变化  部分变化我们可以采用不变的部分定位 整个都在变化的 只能利用其它不变的元素 例如  通过xpath来定位  drive.find...xpath("//iframe[starts-with(@x,'y')]")  x是不变的元素属性 y则是属性的内容  这里采用以什么…