Почему я не могу отправить_ключи в строку поиска Twitch в Python с Selenium? - PullRequest
1 голос
/ 13 февраля 2020

Я пытался написать бота Selenium для поиска в дергаться. Я могу нажать на строку поиска, но не могу отправить какое-либо значение на панель поиска.

в чем проблема? Я работал часами, но не могу решить мою проблему.

Это мой код:

from selenium import webdriver
#https://selenium-python.readthedocs.io/
from selenium.webdriver.common.keys import Keys
#from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class Twitch: 
    def __init__(self):
        self.browser = webdriver.Chrome()

    def openTwitch(self):
        self.browser.get("https://www.twitch.tv/")
        self.browser.maximize_window()

        try:
            barClick = WebDriverWait(self.browser,10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="root"]/div/div[2]/nav/div/div[2]/div/div')))
            barClick.click()
        except:
            print("Element not clickable")

        try:
            searchBar = WebDriverWait(self.browser,10).until(EC.visibility_of_element_located((By.XPATH,'//*[@id="tw-2a283106145a4249e75c7a6787c01324"]')))
            searchBar.send_keys("Xantares")  #this area is not working..
            searchBar.send_keys(Keys.ENTER)
        except:
            print("Element not writable")

twtch = Twitch()
twtch.openTwitch()

Ответы [ 3 ]

1 голос
/ 13 февраля 2020

Старайтесь не брать случайные сгенерированные идентификаторы, они изменчивы, поэтому при следующем запуске вы не достигнете элемента.

Например, вы можете взять ссылку из тега input, например:

searchBar = WebDriverWait(self.browser, 10).until(EC.visibility_of_element_located((By.XPATH,'(//input[@type="search"])[1]')))

В браузере есть инструмент Powerfool, который поможет вам найти правильный селектор:

Browser Console

Вы нажмите F12, затем на вкладке Elements нажмите CTRL + F, это позволит вам проверить выражения XPATH там.

С уважением.

1 голос
/ 13 февраля 2020

Попробуйте вставить текст внутри тега input.

Что-то не так с вашим локатором, измените на:

searchBar = WebDriverWait(self.browser,10).until(EC.visibility_of_element_located((By.XPATH,'//div[@class="tw-relative"]//input[not(contains(@id, "hidden"))]')))
0 голосов
/ 13 февраля 2020

Вы уверены, что этот идентификатор (tw-2a283106145a4249e75c7a6787c01324) действителен? Похоже, это какой-то случайно сгенерированный идентификатор. Если вы хотите сделать это жестко, установите на него фокус и используйте Действия для отправки ключей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...