首页 > 解决方案 > Selenium 并与搜索栏交互

问题描述

嗨,我是 selenium 的新手,但试图在 angel.co 上自动搜索但没有成功!单击时搜索框元素会发生变化,我很难让 selenium 能够拾取元素来做事。本质上,我想在框中输入增长黑客并进行搜索。您必须首先单击该框,输入搜索词,然后按 Enter。

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')

我可以将Growth Hacker 输入到框中,但不能像所有搜索词在此搜索框中那样使其成为标签。

任何帮助将非常感激。

更新

我已经设法将文本插入到框中,但由于某种原因,我似乎无法让它在搜索框中变成带有正确文本的标签。

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()

点击前

点击后

要更改的文本

标签: pythonselenium

解决方案


所以我尝试了自己的方式并且能够搜索输入的结果,您可以尝试代码并查看它是否是您想要的,因为您的问题足够清楚。据我了解,您在搜索在我的代码中运行良好的文本字段时遇到了困难。试试看,如果我能帮上忙,请告诉我!

如果你不熟悉 selenium 和 classes,你总是可以在没有 classes 的情况下编写代码!

  # -*- 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()

推荐阅读