这是类似于以前提出的问题,但所有的解决方案,我发现不工作,在我独特的情况下,这个特定的网站。
我试图通过导航到selenium页面来单击单个顶部列表,但是我无法找到selenium列表,因为它们嵌套在一系列包含唯一ID和类名的flexbox中。不幸的是,似乎唯一可以一致访问所有url列表的方法是使用xpath,但由于嵌套的flexbox,无法访问xpath。
下面是该页面的html片段,其中包含我想查找并单击的项目:
下面是我的代码,使用XPATH无法找到元素-我尝试使用类和CSS选择器,但无法找到它。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import espected_conditions as EC
-
url = "https://www.stubhub.com/philadelphia-eagles-philadelphia-tickets-1-21-2023/event/151223773/?quantity=2§ions=195411%2C195410%2C195414%2C195413%2C195409%2C195408%2C195412%2C195415%2C195430%2C195427%2C195432%2C195433%2C195431%2C195428%2C195434%2C195429&ticketClasses=594&listingQty=&multi=true"
-
opt = Options()
opt.headless = False
driver = webdriver.Chrome('chromedriver.exe', options=opt)
driver.maximize_window()
driver.get(url)
wait = WebDriverWait(driver, 10)
-
wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="app"]/div[2]/div/div[2]/div[1]/div/div[2]/div/div/div[1]/div/div/div/div[2]/button')))
driver.find_element(By.XPATH, '//*[@id="app"]/div[2]/div/div[2]/div[1]/div/div[2]/div/div/div[1]/div/div/div/div[2]/button').click()
这段代码像往常一样正常地打开浏览器,但是一旦等待元素可单击的时间因找不到元素而超时,就会抛出超时异常。
1条答案
按热度按时间vlju58qv1#
在这种情况下,如果要单击第一个“Select”按钮,最好使用基于webelement类型(
button
)和按钮中包含的文本(Select
)的xpath或者,您可以以类似的方式使用css选择器,但这次我们要查找具有属性
shape=pill
的button
,它是具有属性role=button
的div
的子级请注意,您可以在wait command命令之后直接使用
.click()