Python+Selenium定位页面元素-创新互联

1.跳转到Frame/Iframe ,再定位元素
理解:frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位

成都创新互联服务项目包括乐东黎族网站建设、乐东黎族网站制作、乐东黎族网页制作以及乐东黎族网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,乐东黎族网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到乐东黎族省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

1.1方法一
如果iframe有name或id的话,直接使用switch_to_frame("name值")或switch_to_frame("id值")。如下:
driver=webdriver.Firefox()
driver.get(r'http://www.126.com/')
driver.switch_to_frame('x-URS-iframe') #需先跳转到iframe框架
username=driver.find_element_by_name('email')
username.clear()

1.1方法二
如果iframe没有name或id的话,则可以通过下面的方式定位:
#先定位到iframe
elementi= driver.find_element_by_class_name('APP-editor-iframe')
#再将定位对象传给switch_to_frame()方法
driver.switch_to_frame(elementi)

PS:完成操作后,可以通过switch_to.parent_content()方法跳出当前iframe,或者还可以通过switch_to.default_content()方法跳回最外层的页面

2.Xpath 层级定位
2.1 通过绝对路径定位
例如:find_element_by_xpath("/html/body/div/div/div[2]/div[3]/a[2]").click()

绝对路径是从当前元素往前数最近的一个html 开始数的。
2.2 利用元素属性定位
地图有三个属性,href,name,class。

driver.findElement(By.xpath("//a[@name='tj_trnews']")).click();

driver.findElement(By.xpath("//a[@href='http://news.baidu.com']")).click()

driver.findElement(By.xpath("//a[@class='mnav']")).click();

driver.findElement(By.xpath("//a[contains(@href,\"http://map.baidu.co\")]")).click();

参考资料:
https://www.cnblogs.com/csj2018/p/9194618.html 
https://www.cnblogs.com/yufeihlf/p/5689042.html
http://www.cnblogs.com/yufeihlf/p/5717291.html

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页题目:Python+Selenium定位页面元素-创新互联
标题来源:http://ybzwz.com/article/ceipeo.html