-
Notifications
You must be signed in to change notification settings - Fork 301
定位方式
在浏览器中按F12/Ctrl+Shift+I(默认)/更多工具->开发者工具打开Chrome/Firefox内置页面源码查看工具
可从中找到各种定位元素,如title、Xpath、class name、tag name等
具体定位方法需查看selenium文档:https://www.seleniumhq.org/docs/ (或自行搜索)
此处简单记录常用的元素定位函数,可参考如下几个定位相关的教程:
直接查找,方便。如果将下述方法中的element改为elements,将返回所有符合条件的结果(一个list)
-
基于class name的查找:find_element_by_class_name('class_name')
-
基于id的查找:find_element_by_id('id')
-
基于tag name的查找:find_element_by_tag_name('tag_name')
-
基于xpath的查找:find_element_by_xpath('xpath')
-
基于页面title的查找:driver.title.find('title')
主要用于配合WebDriverWait中的等待函数until和By中的各种元素定位方法使用,提高稳定性
其中locator格式为(By.某种定位方式, '对应定位方式的内容')
某种定位方式包含:XPATH, ID, NAME, CLASS_NAME, TAG_NAME等
-
EC.text_to_be_present_in_element(locator, 'text') 若text在locator中存在,返回True,否则返回False
-
EC.presence_of_element_located(locator) 若locator定位成功,返回True,否则返回False
-
EC.title_contains('target_title') 若title中含有target_title,返回True,否则返回False
本代码中用到的title如下:
-
'大麦网-全球演出赛事官方购票平台' # 大麦网官网标题
-
'大麦登录' # 大麦网登录页面标题
-
'支付' # 支付页面标题
本代码中用到的Xpath如下:
- '/html/body/div[2]/div[2]/div/div[2]/div[2]/div[1]' # 实名者/观演人栏
本代码中用到的class name如下:
-
perform__order__select # 本类包括场次选项和票档选项
-
select_left # 选项的左侧项,包括场次和票档
-
select_right_list_item # 选项的右侧项,包括场次1,2,3...和票档1,2,3...
-
presell # 场次选项的左上角标,包括无票和预售
-
notticket # 票档选项的左上角标,若存在,则为缺货登记
-
buybtn # 目标购票页面中的抢购按钮,其text内容包含多种情况,如即将开抢、立即预订、立即购买、选座购买、提交缺货登记
本代码中用到的tag如下:
-
label # 实名者(标签+勾选框)
-
input # 实名者(勾选框)
-
button # 同意以上协议并提交订单