我是Webelement和selenium的新手,任何人都可以使用文本“ Hotel Wahington”帮助我如何在下面找到元素:
<a class="hotel_name_link url" href="/hotel/nl/washington.html?label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYATG4ARjIAQzYAQHoAQH4AQKIAgGoAgS4Apyz__EFwAIB&sid=1b691d9ad57ac7ee7c3d40dac2f7f488&dest_id=-2140479&dest_type=city&group_adults=2&group_children=0&hapos=1&hpos=1&no_rooms=1&sr_order=popularity&srepoch=1581242789&srpvid=87de4712b9a90095&ucfs=1&from=searchresults;highlight_room=#hotelTmpl" target="_blank" rel="noopener">
<span class="sr-hotel__name" data-et-click=" ">Hotel Washington</span>
<span class="invisible_spoken">Opens in new window</span>
</a>
答案 0 :(得分:1)
要基于text "Hotel Wahington"
选择锚标记,请使用以下xpath。
使用以下Xpath
driver.find_element_by_xpath("//a[@class='hotel_name_link url' and contains(.,'Hotel Washington')]").click()
或跟随css选择器。
driver.find_element_by_css_selector("a.hotel_name_link.url[href*='/hotel/nl/washington']").click()
或部分链接文本。
driver.find_element_by_partial_link_text("Hotel Washington").click()
答案 1 :(得分:0)
使用xpath
可以通过..
转到父元素
driver.find_element_by_xpath('//span[.="Hotel Washington"]/..')
或找到具有特定文本的元素
driver.find_element_by_xpath('//a[span[.="Hotel Washington"]]')
答案 2 :(得分:0)
使用
xPath = //*[contains(@text(),'Hotel Wahington')]
OR
//a[@class='hotel_name_link url']//*[contains(@text(),'Hotel Wahington')]
答案 3 :(得分:0)
试用此xpath: // span [text()='Hotel Washington'] / parent :: a
还要注意,答案中的方法“ find_element_by_xpath()”来自Selenium的版本4,该版本仍处于Alpha测试阶段。您很可能会使用Selenium版本3。版本3的有效代码为:
driver.findElement(By.xpath("//span[text()='Hotel Washington']/parent::a")),click();
答案 4 :(得分:0)
您只能使用text
来查找元素。您可以尝试以下解决方案:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 50).until(
EC.presence_of_element_located((By.XPATH, "//span[contains(., 'Hotel Washington')]")))
element.click()