我正在尝试在selenium webdriver python中运行脚本。我试图点击搜索字段的位置,但它始终显示“使用给定的搜索参数无法在页面上找到元素。”
这是脚本:
from selenium import webdriver
from selenium.webdriver.common.by import By
class Exercise:
def safari(self):
class Exercise:
def safari(self):
driver = webdriver.Safari()
driver.maximize_window()
url= "https://www.airbnb.com"
driver.implicitly_wait(15)
Title = driver.title
driver.get(url)
CurrentURL = driver.current_url
print("Current URL is "+CurrentURL)
SearchButton =driver.find_element(By.XPATH, "//*[@id='GeocompleteController-via-SearchBarV2-SearchBarV2']")
SearchButton.click()
note= Exercise()
note.safari()
请告诉我,我错在哪里?
答案 0 :(得分:1)
似乎有两种匹配的情况:
与搜索栏匹配的那个实际上是第二个。因此,您可以按如下方式编辑XPath:
SearchButton = driver.find_element(By.XPATH, "(//*[@id='GeocompleteController-via-SearchBarV2-SearchBarV2'])[2]")
或者简单地说:
SearchButton = driver.find_element_by_xpath("(//*[@id='GeocompleteController-via-SearchBarV2-SearchBarV2'])[2]")
您可以将自己的XPath粘贴到Chrome的Inspector工具中(如上所示),方法是在Google Chrome中加载同一个网站并点击F12(或者只需点击右键并点击" Inspect")。这为您提供了匹配元素。如果您滚动到 2 of 2 ,则会突出显示搜索栏。因此,我们想要第二个结果。 XPath索引从 1 开始,与大多数语言(通常索引从0开始)不同,因此要获取第二个索引,将整个原始XPath封装在括号中,然后在其旁边添加[2]
。