我想知道是否有人可以帮助
我试图单击与搜索文本匹配的搜索结果:
IE:搜索到的文本:“第五元素” 点击结果中包含“第五元素”的
使用以下代码:
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome(executable_path=r'C:\Users\littl\Downloads\chromedriver_win32\chromedriver.exe')
driver.get("https://zooqle.com/")
popup1 = driver.find_element_by_xpath('//*[@id="anp2-wrapper"]/div/div/div[1]')
popup1.click()
searchbar = driver.find_element_by_xpath('//*[@id="inputSearchTop"]')
searchbar.send_keys("The Fifth Element")
time.sleep(2)
searchbar.find_element_by_xpath('//*[contains(text(), "The Fifth Element")]').click()
但是却收到该元素不具有交互性的错误
我在做什么错?
谢谢
littlejiver
答案 0 :(得分:1)
要处理动态元素,请使用WebDriverWait
,然后跟随xpath
。
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r'C:\Users\littl\Downloads\chromedriver_win32\chromedriver.exe')
driver.maximize_window()
driver.get("https://zooqle.com/")
wait = WebDriverWait(driver, 10)
wait.until(ec.element_to_be_clickable((By.XPATH, '//div[@id="anp2-wrapper"]//div[text()="NO THANKS"]'))).click()
wait.until(ec.element_to_be_clickable((By.XPATH, '//input[@name="q"]'))).send_keys("The Fifth Element")
element=wait.until(ec.element_to_be_clickable((By.XPATH, '//div[@class="tt-dataset tt-dataset-qs"]//p[@class="tt-wrap tt-suggestion tt-selectable"]//span[text()="The Fifth Element"]')))
element.location_once_scrolled_into_view
element.click()
浏览器快照: