Python selenium wait until 的实现

2019-05-16 21:34:37 +08:00
 oIMOo

经过查阅文档,wait until 需要调用有 __call__ 方法的值。

我的情况是想检查 <div class='title'> piggy </div> 中的 piggy 是否出现。

读了 文档 之后,并没有发现哪个方法是检查内容的。

这个 title 不是网页的最高级别 title,只是页面中的一个 div,所以 title_istitle_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

求教:肯定有更工整的办法吧?

3758 次点击
所在节点    Python
8 条回复
tomoya92
2019-05-16 21:42:03 +08:00
fakeman
2019-05-16 21:46:47 +08:00
oIMOo
2019-05-16 22:00:45 +08:00
@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'))```
然而通过不了,所以我才用的主题里的笨办法……
oIMOo
2019-05-16 22:09:39 +08:00
@oIMOo
(EC.text_to_be_present_in_element_value((By.CLASS_NAME, 'title'), 'Introduction'))
这个可以哈哈哈,我写错方法了……
oIMOo
2019-05-16 22:10:48 +08:00
@oIMOo 现在在研究怎么替换这一句:

if (browser.find_element_by_xpath('//*[@title="suivant"]')):
itskingname
2019-05-16 22:28:42 +08:00
用 By.XPATH, 并把 XPath 写为:

//div[@class="title" and contains(text(), "piggy")]
oIMOo
2019-05-16 23:08:56 +08:00
@itskingname
谢谢~~ 这个搞定了~
目前正在替换怎么检测是否存在某个 checkbox

原代码:if (browser.find_element_by_xpath("//input[@value='75']")):, 网页第二页
dcalsky
2019-05-17 00:31:11 +08:00
requests 是发 http 请求用的呀,压根不可能知道网页长什么样有什么东西啊。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/564852

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX