python - 用于在 textnow 上发送短信的带有 selenium 的 Python 脚本不起作用
问题描述
目前我正试图弄清楚如何创建一个可以在网站www.textnow.com上发送文本消息的脚本。我是 selenium 的新手,所以我不确定如何设置它才能正常工作。
目前我有:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
class Textnow:
def __init__(self, TN_USER, TN_PASS, PHONE_NUMBER, MESSAGE):
self.TN_USER = 'myusername'
self.TN_PASS = 'mypassword'
self.PHONE_NUMBER = '+17777777777'
self.MESSAGE = 'MESSAGE'
self.url = "https://www.textnow.com/login"
def send_text(self):
options = webdriver.ChromeOptions()
options.add_argument("-headless")
#driver = webdriver.Chrome(options=options)
driver = webdriver.Chrome('C:/Users/Myname/AppData/Local/Google/Chrome/User Data/Chrome Driver/chromedriver.exe')
try:
driver.get(self.url)
except:
pass
time.sleep(8)
print('OK')
WebDriverWait(driver, 8).until(EC.visibility_of_element_located((By.XPATH, "//input[@name='username']")))
uname_box = driver.find_element_by_xpath("//input[@name='username']")
pass_box = driver.find_element_by_xpath("//input[@name='password']")
uname_box.send_keys(self.TN_USER)
pass_box.send_keys(self.TN_PASS)
login_btn = driver.find_element_by_xpath("//button[@type='submit']")
login_btn.click()
try:
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[@class='form_button']")))
except:
pass
got_it = driver.find_element_by_xpath("//input[@class='form_button']")
got_it.click()
new_text_btn = driver.find_element_by_xpath("//button[@id='newText']")
new_text_btn.click()
number_field = driver.find_element_by_xpath("//input[@class='newConversationTextField']")
number_field.send_keys(self.PHONE_NUMBER)
text_field = driver.find_element_by_xpath("//textarea[@id='message']")
text_field.click()
text_field.send_keys(self.MESSAGE)
send_btn = driver.find_element_by_xpath("//div[@class='send-btn']")
send_btn.click()
每当我运行脚本时,它似乎什么也没做。输出为空白:
Python 3.8.6rc1 (tags/v3.8.6rc1:08bd63d, Sep 7 2020, 23:10:23) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
= RESTART: C:\Folder Name\textsmsfolder\text_sms_edit.py
>>>
解决方案
不确定您是否将正确的链接传递给 selenium 驱动程序。但是,如果您想在网页中填写登录表单,则以下代码有效。
url = "https://www.textnow.com/login"
driver.get(url)
username_element = driver.find_element_by_id('txt-username')
username_element.send_keys('username')
password_element = driver.find_element_by_id('txt-password')
password_element.send_keys('password')
try:
login_button = WebDriverWait(driver, 5).until(
EC.element_to_be_clickable((By.ID, 'btn-login')))
login_button.click()
except Exception as e:
print(e)
编辑 1
已添加代码以单击登录按钮推荐阅读
- javascript - 再次加入拆分后的字符串,跳过拆分后形成的数组的一个索引
- rxjs - combineLatest2 只有第一个非空流输出
- html - 禁用事件 ike click in fa-fa-icon 或 typescript 中的任何文本
- python-3.x - 连接到 s3 中的特定路径
- spring-boot - 如何解决“找不到符号 JsonMessageConverter”?
- python-3.x - Python Selenium 按钮单击没有效果
- delphi - 防止系统在应用程序运行时进入睡眠或关闭显示器
- tensorflow - 如何在张量流中修复“输入形状轴 0 必须等于 4,得到形状 [5]”?
- javascript - 刷新jquery数据表而不刷新整个页面
- java - 如何解决在父或祖先上下文中找不到 android:onClick 属性的方法?