Selenium selenium 获取隐藏元素值失败

Sutune · 2018年01月02日 · 最后由 Sutune 回复于 2018年01月02日 · 2389 次阅读

问题描述

1.在页面 https://drfone.wondershare.com/clone.html 中输入邮箱点击 submit 会有 3 种结果:成功,失败、邮箱重复,需要根据输入邮箱后点击 submit 自动获取页面文字来进行判断发送结果。

2.输入正确的邮箱后页面显示如图所示发送成功文字,如下图所示:

3.使用代码获取页面文字始终为空


from selenium import  webdriver

driver=webdriver.Firefox()
driver.get('https://drfone.wondershare.com/clone.html')

driver.find_element_by_id('email').send_keys('test@qq.com')
driver.find_element_by_css_selector('.btn_send').click()

# js = 'document.querySelector("dl").style.display="block";'
# driver.execute_script(js)

def send_email_isok():
    text=driver.find_element_by_css_selector('dl.hint_txt.success.isok > dt').text
    print(text)
    if text == '':
        print('send email not success')
        return False

    else:
        print('send email is success')
        return True

send_email_isok()

4.但是发送失败时的文字还是可以获取到的,不知是何原因导致。

共收到 4 条回复 时间 点赞

点击之后等待一段时间试试~selenium 找不到元素,先等待试试~

css_selector 的写法换成'[class="hint_txt success isok"]',这样试一下

Sutune 关闭了讨论 01月02日 16:29
Sutune 重新开启了讨论 01月02日 16:29
白纸 回复

非常感谢提醒,我加了强制等待 sleep(2)之后确实可以获取到了,估计是点击 submit 之后需要等待 js 响应显示元素。

木子李 回复

谢谢,这个其实和元素定位方式无关,是等待时间的问题。

Sutune 关闭了讨论 01月02日 16:46
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册