python - 使用 python 和 selenium 如何获取值不是 utf-8 的占位符的值?
问题描述
我试图获取电子邮件地址并单击以下屏幕截图中的刷新按钮。但是我遇到了错误。
我的代码如下:
from selenium import webdriver
url = 'http://od.obagg.com/ '
driver = webdriver.Chrome(executable_path='chromedriver')
driver.get(url)
s = driver.find_element_by_id('//*[@id="shortid"]').get_attribute('placeholder')
print(s)
根据检查,我试图做并尝试了多种方法来获取该电子邮件字段值并单击刷新按钮。但仍然没有运气。
有人知道有什么技巧可以分享吗?
解决方案
这可能是由于该元素被禁用,也可能find_element_by_id('//*[@id="shortid"]')
是不正确的。它可以是:
find_element_by_xpath('//*[@id="shortid"]')
find_element_by_id("shortid")
?
以下对我有用:
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Chrome(executable_path='chromedriver')
driver.maximize_window()
driver.get('http://od.obagg.com/')
wait = WebDriverWait(driver, 10)
el = wait.until(ec.visibility_of_element_located((By.ID, "shortid")))
placeholder = el.get_attribute("placeholder")
email = el.get_attribute('value')
print(placeholder, email)
# 请等待分配临时邮箱 -_ylp06tc@xxx.xxx
如果您需要 10 封不同的电子邮件,您可以使用:
from time import sleep
for x in range(10):
driver.find_element_by_id("refreshShortid").click()
sleep(0.15) # you may have to increase this value to give enough time to generate the new email
new_email = driver.find_element_by_id("shortid").get_attribute('value')
print(new_email)
推荐阅读
- assembly - 从控制台写入文件会产生空格
- python-3.x - 是否有 O(1) 空间 O(k) 运行时间方式来创建和使用 Python 中 k 大小切片上的迭代器
- celery - 如何在 celery 中使用“-b”
- python - 随时间反向传播的多个不匹配矩阵
- python-3.x - 如何在flask python中为不同用户显示不同的待办事项列表数据
- oracle - 用于监视 DBMS_ALERT 的 Oracle DBMS_SCHEDULER 作业
- r - 在R中使用eval()和substitute()动态评估表达式
- excel - RK4 VBA 函数的难点。函数只返回#REF!价值
- java - 商店 ImageButton 解锁
- regex - 如何将字符串与双破折号和/或单破折号匹配?