最新消息:

Selenium+iframe准确定位元素

学习 林夕 393浏览 0评论

很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug也可以看到,就是定位不到,这种情况很有可能是frame在搞鬼(原因之一,改天专门说说定位不到元素,可能的一些原因及处理办法)。

frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe对selenium定位而言是一样的,selenium有一组方法对frame进行操作。
———————
概括起来说就是:
1.怎么切到frame中(switch_to.frame())
2.从frame中切回主文档(switch_to.default_content())
3.嵌套frame的操作(switch_to.parent_frame())
作者:huilan_same
来源:CSDN
原文:selenium之 定位以及切换frame(iframe)
版权声明:本文为博主原创文章,转载请附上博文链接!

#!/usr/bin/env python
# -*- coding: utf_8 -*-

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep

driver = webdriver.Chrome()
#打开chrome浏览器
driver.get("https://farmadmintest2.ly5000.net/platform-framework/index.html")
#打开网址
sleep(50)
#延时50秒,手工登录,就不会在脚本中泄露自己的账号密码。
driver.find_element_by_link_text('会员管理').click()
#点击左边会员管理按钮。
driver.find_element_by_xpath('//*[@id="side-menu"]/li[3]/ul/li[3]/a/i').click()
#打开会员管理大项下面的会员管理按钮。
driver.switch_to.frame(1)
#切到frame中(switch_to.frame())
# 1.用frame的index来定位,第二个是1
#driver.switch_to.frame("iframe9")
#2.用id或name来定位
#driver.switch_to.default_content()
#从frame中切回主文档(switch_to.default_content())
#切到frame中之后,我们便不能继续操作主文档的元素,这时如果想操作主文档内容,则需切回主文档。
#嵌套frame的操作(switch_to.parent_frame())
driver.find_element_by_xpath('//*[@id="jqGridPager_center"]/table/tbody/tr/td[8]/select/option[3]').click()
#点击每页50行按钮
sleep(5)
#延时5秒等待页面加载完成
content = driver.find_element_by_xpath('//*[@id="gview_jqGrid"]/div[3]')
#章节内容
with open('C:\\Users\\luoqkk\\Desktop\\qidian.txt', 'a+',encoding='utf-8') as f:
#打开文件并写入,注意路径要转义,本来是一个斜杠,再加一个斜杠。
    print("\r\n"+(content.text), file=f)
        #打开文件并写入,章节内容前空一行

#下面这一块代码让它循环执行。
row = 1
while row <= 12:
#有多少章,就把循环次数写多少次。
    driver.find_element_by_xpath('//*[@id="next_jqGridPager"]/span').click()
    #点击下一页按钮
    sleep(10)
    #延时5秒等待页面加载完成,其实不加延时也是可以的,python是一条一条执行命令的,页面加载完成才会执行下一条命令。
    content = driver.find_element_by_xpath('//*[@id="gview_jqGrid"]/div[3]')
#章节内容
    with open('C:\\Users\\luoqkk\\Desktop\\qidian.txt', 'a+',encoding='utf-8') as f:
#打开文件并写入,注意路径要转义,本来是一个斜杠,再加一个斜杠。
        print("\r\n"+(content.text), file=f)
    #打开文件并写入,章节内容前空一行
    row += 1
    #循环变量row应该跟while条件下面的第二行是同样的缩进。表示是子语句的一部分。
#循环执行的代码块。

转载请注明:一秒钟的梦 » Selenium+iframe准确定位元素

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址