如何解决如何使用 selenium 在 div 类中获取 a-tag 的元素?
我最近在做一个项目,我必须从特定网站获取元素。
我想获取下面的文本元素。
config/credentials/test.key
我一直在尝试解决这个问题,但我找不到任何可以正常工作的东西。
如果你能帮助我,我会爱你。
谢谢。
解决方法
根据您提供的信息,您要查找的文本位于 a
元素内,因此该元素的 xpath
类似于://a[contains(@href,'https://www')]
但由于其中还有 i
元素,因此从 a
元素获取文本将为您提供 a
本身中包含的文本和 i
中的文本。
因此,您应该从 i
获取此处看起来像
(空格)的文本,并将其从您从 a
接收的文本中减少。
如果您想对其中包含 a
和 href
元素的所有 i
元素执行此操作,您可以使用以下 xpath
://a[@href and ./i]
如果您要查找的元素有更具体的定义 - 我提到的 xpath
应该相应地更新
从您的评论中,我了解到您想提取该文本。所以这是您的代码,可以提取您想要的文本。
Selenium::WebDriver::Wait
.new(timeout: 60)
.until { !driver.find_element(xpath: "//i[@class='fa fa-map-marker']/..").text.empty? }
p driver.find_element(xpath: "//i[@class='fa fa-map-marker']/..").text[/(?<=before \")\w+ \w+ \w+ \w+ \w+/]
输出
"Text I want to get"
,
我无法直接获取我想要的元素,所以这就是我所做的。 只是我确实用一些方法修改了元素。
def seller_name
shop_info_elements = @driver.find_elements(:class_name,"block-content")
shop_info_text= shop_info_elements.first.text
shop_info_text_array = shop_info_text.lines
seller_name = shop_info_text_array.first.chomp
seller_name
end
它并不漂亮,但它可以用于同一站点上的任何其他页面。