Публикация твита в твиттере с использованием Python Selen для POC - PullRequest
1 голос
/ 29 октября 2019

Я пытаюсь опубликовать твит в Твиттере, используя python и selenium, но на момент публикации он выдает ошибку тайм-аута.

У меня готов код ....

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium import webdriver
import time
import os
# create a new Chrome session
chromedriver = "C:/Users/LENOVO/Desktop/chromedriver/chromedriver.exe"
chromedriver = "C:/Users/LENOVO/Desktop/chromedriver/chromedriver.exe"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
 #driver = webdriver.Chrome()
 driver.implicitly_wait(30)
 driver.maximize_window()

 # navigate to the application home page
 driver.get("https://twitter.com/login")


 # get the username textbox
 login_field = driver.find_element_by_class_name("js-username-field")
 login_field.clear()

  # enter username
  login_field.send_keys("")
   time.sleep(1)

  #get the password textbox
   password_field = driver.find_element_by_class_name("js-password- 
    field")
    password_field.clear()

    #enter password
       time.sleep(10)
       password_field.send_keys("")
       time.sleep(10)
       password_field.submit()

       autotw1 = WebDriverWait(driver, 140).until(
      EC.element_to_be_clickable((By.CSS_SELECTOR, "div[id='tweet-box-home- 
      timeline']")))
       autotw1.send_keys("""Just a testing """)  

       tweet = driver.find_element_by_xpath("//span[@class='add-tweet-button 
       ']//following-sibling::button[contains(@class,'tweet-action')]")
       tweet.click()

Я получаю сообщение об ошибке ниже.


TimeoutException Traceback (последний вызов последний) в 3940 autotw1 = WebDriverWait (драйвер, 140) .until (---> 41 EC.element_to_be_clickable ((By.CSS_SELECTOR, "div [id = 'tweet-box-home-timeline']")))

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Вы можете использовать этот локатор: By.CLASS_NAME, 'DraftEditor-root'.

Вы должны нажать на элемент, чтобы вызвать другие элементы, чтобы написать твит, а именно: By.CLASS_NAME, 'public-DraftEditorPlaceholder-root'), и использовать ActionChains для отправки текста. .

Во-первых, следующий импорт:

from selenium.webdriver import ActionChains

После отправки логина, пожалуйста, попробуйте ниже:

password_field.submit()

autotw1 = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, 'DraftEditor-root')))
autotw1.click()

element = WebDriverWait(driver, 3).until(EC.element_to_be_clickable((By.CLASS_NAME, 'public-DraftEditorPlaceholder-root')))
ActionChains(driver).move_to_element(element).send_keys("""Just a testing """).perform()

sendTw = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//div[@role="button"]/div/span/span')))
sendTw.click()
0 голосов
/ 29 октября 2019

Вы указали неверные значения xpath и css в своем скрипте. Пожалуйста, запустите приведенный ниже скрипт со своими учетными данными и не забудьте обновить путь к драйверу Chrome.

from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By 
import time 
from selenium.webdriver.support.ui import WebDriverWait as Wait
from selenium.webdriver.common.action_chains import ActionChains


# Open Chrome
driver = webdriver.Chrome('Path to chrome driver')
driver.get("https://twitter.com/login")

# get the username textbox
login_field = driver.find_element_by_class_name("js-username-field")
login_field.clear()

# enter username
login_field.send_keys("")
time.sleep(1)

# get the password textbox
password_field = driver.find_element_by_class_name("js-password-field")
password_field.clear()

# enter password

password_field.send_keys("")

password_field.submit()

autotw1 = WebDriverWait(driver, 15).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='css-1dbjc4n r-xoduu5 r-1sp51qo r-mk0yit r-13qz1uu']")))
ActionChains(driver).move_to_element(autotw1).click(autotw1).send_keys("Just a testing").perform()


tweet = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='css-901oao css-16my406 css-bfa6kz r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0']//span[@class='css-901oao css-16my406 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0'][contains(text(),'Tweet')]")))
tweet.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...