通知我知道之前已经有人问过这个问题,我一直在尝试通过研究其他帖子和硒文档来解决此问题,但是我无法解决该问题。
问题:如何在硒开始之前加载页面上的所有元素?为什么我的代码在某些网页上返回文本值,而不是在此网页上?
重现问题
我在Ruby和Chrome中使用Selenium。我要查找的结果是,转到一个网站,选择一些文本,及其标签名称,即“ // h1'Diamond Physicians Revolutionary Healthcare'”,然后让硒检查该标签。除此站点外,我在其他网页上也取得了成功...“ https://diamondphysicians.com/” ...我相信它是引导“业务”主题,因此,一旦滚动到它们,某些元素就会加载。
这是我一直在阅读和尝试的最好的总结。 (显式等待,隐式等待,单击元素,并且我已尝试滚动到底部)... How to get a Selenium/Ruby bot to wait before performing an action?
代码 *某些东西被散列用于测试
options = Selenium::WebDriver::Chrome::Options.new
#options.add_argument('--headless')
#options.add_argument('--window-size=1280x1280')
driver = Selenium::WebDriver.for :chrome, options: options
#driver.navigate.to "https://diamondphysicians.com/"
#wait = Selenium::WebDriver::Wait.new(:timeout => 15)
driver.get("https://diamondphysicians.com/")
#element = wait.until {driver.find_element(:class => "widget-title")}
#element.click
#driver.element(:class, "widget-title").when_present.click
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
substring = "Welcome to the future of primary care!"
driver.find_elements(:xpath => "//p").each do |r|
puts "Cell Value: " + r.text
if r.text.include? substring
puts "FOUND IT FOUND IT FOUND IT FOUND IT FOUND IT FOUND IT FOUND IT"
end
end
运行此程序时,我得到
单元格值:
单元格值:
单元格值:
单元格值:
单元格值:
单元格值:
单元格值:
单元格值:
单元格值:
单元格值:
单元格值:
单元格值:
单元格值:
单元格值:
单元格值:
单元值:订阅《钻石医师通讯》以了解最新的新功能,并与其他钻石医师,会员或雇主交流经验
编辑
对于遇到此问题并需要大量资源的任何人,请查看此博客。自2019年2月起有效
https://yizeng.me/2014/04/08/get-text-from-hidden-elements-using-selenium-webdriver/
答案 0 :(得分:1)
代替这个
driver.find_elements(:xpath => "//p").each do |r|
puts "Cell Value: " + r.text
请尝试这个
driver.find_elements(:xpath => "//p").each do |r|
puts "Cell Value: " + driver.execute_script("return arguments[0].innerHTML", r)
请让我知道是否适合您。