Селен и взаимодействие с панелью поиска - PullRequest
0 голосов
/ 04 марта 2020

Привет, я новичок в селене, но безуспешно пытаюсь автоматизировать поиск на angel.co! Элемент окна поиска изменяется при нажатии, и я с трудом могу сказать, что селен способен подобрать элементы для выполнения каких-либо действий. По сути, я хочу ввести рост хакер в поле и сделать поиск. Сначала вы должны нажать на поле, ввести критерий поиска и затем нажать клавишу ввода.

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


driver.get("https://angel.co/jobs")

time.sleep(5)

 WebDriverWait(driver,20).until(EC.visibility_of_element_located
 ((By.XPATH,"//[@id='main']/div/div[5]/div[2]/div/div[2]/div[1]/div[1]/
 button/div")))

element = driver.find_element_by_xpath('//*[@id="main"]/div/div[5]/div[2]/div/div[2]/div[1]/div[1]/button/div')

driver.execute_script("arguments[0].innerText = 'Growth Hacker';",element)

time.sleep(5)

element.send_keys(Keys.RETURN')

Я дошел до возможности ввода Хакера роста в поле, но не могу его сделать стать тегом, как и все условия поиска в этом окне поиска.

Любая помощь будет очень признательна.

ОБНОВЛЕНИЕ

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

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


driver.get("https://angel.co/jobs")

WebDriverWait(driver,60).until(EC.element_to_be_clickable((By.XPATH,'//span[@class="label_82eab"]')))

element4 = driver.find_element_by_xpath('//span[@class="label_82eab"]')
time.sleep(5)
driver.execute_script("arguments[0].innerText='Edinburgh';",element4)
time.sleep(5)
WebDriverWait(driver,60).until(EC.element_to_be_clickable((By.XPATH,'//span[@class="label_82eab"]')))

driver.find_element_by_xpath('//span[@class="label_82eab"]').click()

До щелчка

После щелчка

Текст для изменения

1 Ответ

0 голосов
/ 04 марта 2020

Итак, я попробовал свой собственный способ и смог найти введенный результат, вы можете попробовать код и посмотреть, подходит ли он вам, потому что ваш вопрос достаточно ясен. Из моего понимания вы находите трудности в поиске текстового поля, которое прекрасно работает в моем коде. Попробуйте и дайте мне знать, если я могу помочь!

Вы всегда можете написать код без классов, если вы не знакомы с селеном и классами!

  # -*- coding: utf-8 -*-
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import Select
    from selenium.common.exceptions import NoSuchElementException
    from selenium.common.exceptions import NoAlertPresentException
    import unittest, time, re


class Angel(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome("change to ur chrome driver")
        self.driver.implicitly_wait(30)


def test_angel(self):
    driver = self.driver
    driver.get("https://angel.co/")
    driver.find_element_by_id("search").click()
    time.sleep(3)
    driver.find_element_by_id("search").clear()
    time.sleep(3)
    driver.find_element_by_id("search").send_keys("Growth Hacker")
    time.sleep(3)
    driver.find_element_by_id("search").send_keys(Keys.ENTER)
    time.sleep(3)



def tearDown(self):
    self.driver.quit()


if __name__ == "__main__":
    unittest.main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...