经过查阅文档,wait until 需要调用有 __call__
方法的值。
我的情况是想检查 <div class='title'> piggy </div>
中的 piggy 是否出现。
读了 文档 之后,并没有发现哪个方法是检查内容的。
这个 title 不是网页的最高级别 title,只是页面中的一个 div,所以 title_is
和 title_contains
并不适用。
目前使用的办法是:
time_now = time.time()
while(time_now - time.time() < timeout_max):
title_find = browser.find_element_by_class_name('title')
if (title_find and title_find.text == 'piggy'):
break
else:
if (time_now - time.time() >= timeout_max):
Timeout
do something
求教:肯定有更工整的办法吧?
搞定啦
检测 div 出现:EC.presence_of_element_located((By.ID, 'id_name'))
检测 div 内容:EC.text_to_be_present_in_element((By.CLASS_NAME, 'class_name'), 'piggy')
检测按钮:EC.element_to_be_clickable((By.ID, 'button_id'))
查找 checkbox: EC.presence_of_element_located((By.XPATH,"//input[@value='choose_me']"))
检查是否选择: browser.find_element_by_xpath("//input[@value='choose_me']").is_selected()
检查是否有alert:EC.alert_is_present()
1
tomoya92 2019-05-16 21:42:03 +08:00 via iPhone
|
2
fakeman 2019-05-16 21:46:47 +08:00
|
3
oIMOo OP @tomoya92 @fakeman
谢谢两位,目标网页:[点击这里]( http://www.rdv-etrangers.meurthe-et-moselle.gouv.fr/eAppointment54-etrangers/appointment.do?preselectservice=SEJOUR) 我的代码```WebDriverWait(browser, 5).until(EC.presence_of_element_located_value((By.CLASS_NAME, 'title'), 'Introduction'))``` 然而通过不了,所以我才用的主题里的笨办法…… |
4
oIMOo OP @oIMOo
(EC.text_to_be_present_in_element_value((By.CLASS_NAME, 'title'), 'Introduction')) 这个可以哈哈哈,我写错方法了…… |
5
oIMOo OP |
6
itskingname 2019-05-16 22:28:42 +08:00
用 By.XPATH, 并把 XPath 写为:
//div[@class="title" and contains(text(), "piggy")] |
7
oIMOo OP @itskingname
谢谢~~ 这个搞定了~ 目前正在替换怎么检测是否存在某个 checkbox 原代码:if (browser.find_element_by_xpath("//input[@value='75']")):, 网页第二页 |
8
dcalsky 2019-05-17 00:31:11 +08:00
requests 是发 http 请求用的呀,压根不可能知道网页长什么样有什么东西啊。
|