python+selenium 两个同样的class怎么定位到第二个
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python+selenium 两个同样的class怎么定位到第二个相关的知识,希望对你有一定的参考价值。
图一,集成环境 只要鼠标移动到该元素上就会自动显示下面两个,鼠标移动我已经实现,我现在要取第二个‘功能环境1’去做点击操作,怎么处理?
css定位,driver.find_element_by_css_selector(ul[role="menu"][id="item_3$Menu"]>li:nth-child(2))定位集成环境就改成child(1)
定位功能环境就改成child(2)
如果元素role和id并列不能定位,那就再加个方括号,里面copy上class属性,样式同role,如果能找到ul元素,肯定可以定位这2个元素 参考技术A 鼠标移动到集成环境上,下拉内容会出来,然后直接click element就行了。用by xpath就行。
xpath直接 右键,copy里面有。 参考技术B 用by_link_text方法去尝试定位这个元素追问
试过了,定位不到
追答那试试xpath定位找li[2]或是文本
再不然按键盘方向建下有没有用
参考技术C //ul[@class="ant-menu ant-menu-vertical"]/li[2] 参考技术D 根据楼主贴的图来看Xpath定位,我写一个楼主可以试试。driver.find_element_by_xpath("//*/li/ul/li[2][text()="功能环境1"]").click()
通过Python3+selenium自动测试网页
使用的是selenium,最开始接触这个模块包是爬虫,这次是工作需要来自动测试网页。记录一下模拟不同浏览器的方式
- 总共测了两个浏览器,Firefox在centos7上和chrome在win10上。都是模拟的IPAD方式访问,原因是使用模拟手机的话,会有部分内容被挡住导致无法模拟点击,┑( ̄Д  ̄)┍无奈。
- so,模拟手机和模拟IPAD是同样的操作,只是把对应IPAD的内容换成想要的手机就可以了。
from selenium import webdriver
# 使用Firefox手机浏览器
user_agent = "Mozilla/5.0 (iPad; CPU OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"
profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", user_agent)
driver = webdriver.Firefox(profile, executable_path="geckodriver")
# 设置窗口大小
driver.set_window_size(1080, 1920)
testUrl = ‘www.baidu.com‘ # 已替换
# 加载指定的网址
driver.get(testUrl)
# 模拟chrome手机浏览器
mobileEmulation = {‘deviceName‘: ‘iPad‘}
options = webdriver.ChromeOptions()
options.add_experimental_option(‘mobileEmulation‘, mobileEmulation)
driver = webdriver.Chrome(executable_path=‘chromedriver.exe‘, chrome_options=options)
testUrl = ‘www.baidu.com‘ # 已替换
driver.get(testUrl)
# 设置窗口大小
driver.set_window_size(1024, 1366)
###
实现逻辑
###
可以注意到:
Firefox和chrome对于模拟手机的设置方式不同。
Firefox是通过改变响应头来模拟,chrome是有固定的设备选项。
以上是关于python+selenium 两个同样的class怎么定位到第二个的主要内容,如果未能解决你的问题,请参考以下文章
2018年《selenium+python3.6课程》3月31号开学- 零基础入门包教会
python selenium 有两个alert 点击一个alert 的确定之后,又弹出另一个alert需要点确定 ,怎么处理??