我正在尝试自动发布到我的社交媒体帐户。我已经成功地编写了登录脚本,在登录后,我很难找到传递帖子的textarea元素,之后我将尝试在帖子上附加一个图像,制作帖子并注销。但现在,我被困在定位文本区登录后。这是密码
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
usernameStr = 'JonJames3872@gmail.com'
passwordStr = 'JamesJon'
textStr = 'Testing my Post'
browser = webdriver.Chrome()
browser.get(('https://accounts.kingsch.at/?client_id=com.kingschat&scopes=%5B%22kingschat%22%5D&redirect_uri=https%3A%2F%2Fweb.kingsch.at%2F'))
# fill in username and password
password = browser.find_element_by_name('password')
password.send_keys(passwordStr)
username = browser.find_element_by_class_name('field')
username.send_keys(usernameStr)
signInButton = browser.find_element_by_class_name('submit-btn')
signInButton.click()
# I HAVE LOGGED IN, NOW THIS IS WHERE MY CODE HAS A PROBLEM
text = browser.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/div/div[1]/div/div/div[1]/textarea")
text.send_keys(textStr)
这是元素,来自检查元素:
<textarea placeholder="What's happening?" class="KingingBox__input"></textarea>
我认为三个问题中有三个都完成了
请尝试以下代码:
在这一行:
我们确定浏览器将等待每个元素可见的最长时间为10秒。如果文本区域的显示时间超过10秒,脚本将停止。如果你看到巨大的延迟,等待的时间就会增加
此外,正如您所见,我使用了这一行:
以定位文本区域
在这方面:
我找到了负责接受上传的输入标签,然后在上面发送我想要上传的文件的确切路径
最后一部分:
我将显示照片上传成功的元素保存到inserted_photo变量中。如果显示此变量,则表示照片上传正确。因此,既然我们有了文字和照片,我们就可以点击“发布”按钮了
尝试使用非动态的静态属性,并且不存在将来更改的危险。这样可以为代码创建稳定性。因为选择像示例中那样的xpath是有风险的。如果一个div或另一个标记将被立即排除或包含,那么xpath就没有用处
PS:由于测试原因,我上传了两篇帖子,很抱歉,我无法以其他方式尝试
相关问题 更多 >
编程相关推荐