selenium + 元素定位
一、selenium的定位方式有以下八种: find_element_by_id() find_element_by_class_name() find_element_by_link_text() find_element_by_xpath() find_element_by_name() find_element_by_tag_name() find_element_by_partial_link_text() find_element_by_css_selector() 以上是定位单个元素的,如果想定位一组元素可以利用下面这种方式,其实都是一样的,只不过是把element变为 elements就可以了: find_elements_by_id() find_elements_by_class_name() find_elements_by_link_text() find_elements_by_xpath() find_elements_by_name() find_elements_by_tag_name() find_elements_by_partial_link_text() find_elements_by_css_selector() 利用上面这几种方式可以定位一组元素,如果想取消勾选其中一个可以用pop().click(),默认最后一个,第一个用pop(1),第二个用pop(2),一次类推 二、Xpath的定位有以下几种方式: xpath绝对路径定位 find_element_by_xpath("/html/body/div/div[2]/from/span/input") 利用元素属性定位 find_element_by_xpath("//input[@id=‘kw’]") find_element_by_xpath("//*[@id=‘kw’]") //表示所有属性中id=‘kw’的元素 利用层级与属性结合 find_element_by_xpath("//span[@class=‘bgs’]/input") find_element_by_xpath("//form[@id=‘form’]/span[2]/input") 使用逻辑运算符 find_element_by_xpath("//input[@id=‘kw’ and @class=‘su’]/input") 三、CSS定位方式: 通过父子关系定位 find_element_by_css_selector(“span>input”) 通过属性定位 find_element_by_css_selector("[name=‘kw’]") 组合定位 find_element_by_css_selector(“form.fm>span>input.sipt”) 四、操作浏览器: set_windows_size() driver.back driver.forward driver.refresh 有时候submit()和click()可以互换使用 right_click=driver.find_element_by_id(“xx”) ActionChains(driver).context_click(right_click).perform() 类似的这种方法很多,这里就写了几个常用的,记录一下。 五、设置元素等待的三种方式: 1、显示等待 WebDriverWait(driver,5,0.5).until(expected_conditions.presence_of_element_located((By.ID,“kw”))) 2、隐式等待 implicitly_wait() 3、休眠 sleep() 第1中和第2种方式还有一个用途就是,遇到变动的元素,我们不好定位,这时候我们可以利用这种方式,设定一个时间来检测它,定位到就算通过,一直定位不到就不通过。 六、多表单切换 switch_to.frame switch_to.parent_content() switch_to.default_content() //跳到最外层 七、多窗口之间的切换 switch_to.windows() 八、执行js js=“windows.scrollTo(100,450)” driver.execute_script(js) ———————————————— 版权声明:本文为CSDN博主「在路上288」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/m0_57133702/article/details/120577761