将document.txt中的特定行添加到具有特定ID的注释字段,然后移至下一行?

时间:2019-08-20 14:28:49

标签: ruby-on-rails ruby watir

如何将我的document.txt中的特定行添加到具有特定ID的YouTube评论字段,然后移至我的document.txt的下一行。 YouTube评论字段的ID为“ contenteditable-root”。我已经创建了这段代码,但是在YouTube评论字段中添加的文本显示在方括号中,例如[“ Hello”]

或者在第二个示例中什么也不显示

示例1:

file = 'comments.txt'
File.readlines(file).each do |i|
            files = [i]
            files.each { |val| 

browser.execute_script("document.getElementById('contenteditable-root').innerHTML = '#{files}';")

}
end

示例2:

line_number = 1 
loop do
comments = IO.readlines('comments.txt')[line_number-1]
browser.execute_script("document.getElementById('contenteditable-root').innerHTML = '#{comments}';")
line_number += 1 
end

comment.txt文件:

Hellooo !!
hi
Goodbye 
Goodnight 

2 个答案:

答案 0 :(得分:1)

假设这里的其他所有内容都是正确的,那么您所做的迭代很奇怪,您应该使用:

file = 'comments.txt'
File.readlines(file).each do |i|
  browser.execute_script("document.getElementById('contenteditable-root').innerHTML = '#{i}';")
end

答案 1 :(得分:0)

在我看来,您需要学习如何调试。

第1步::签入setwd("E:/IA/RBuilds/Consolidation") #folder with spreadsheets library(readxl) data.files = list.files() df <- readxl::read_excel(data.files[1], sheet=1) #reading the first file of list for (file in data.files[-1]) { newFile <- readxl::read_excel(file, sheet=1)[-1,] ## Drops the first row df <- merge(df, newFile, all=T) } about irb),以确保您的代码打印出正确的文本:

irb

预期输出:

File.readlines('comments.txt').each do |line|
  p line
end

如果没有,则查找how to read a file per line

步骤2:您的Java脚本是否有效?

转到您要测试的页面,打开调试器(F12)并直接从控制台运行Javascript:

=> "Line 1"
=> "Line 2"
=> "Line 3"

如果它不起作用,则尝试在Javascript上进一步学习如何与元素交互。

第3步:我的代码实际上是否可以在Watir上正常工作?

再次打开document.getElementById('contenteditable-root').innerHTML = 'hi'; 并尝试

irb

如果失败,请搜索错误,查找Watir和execute_script。

然后最终在require 'watir' b = Watir::Browser.new b.goto 'https://youryoutubepage.com/path' b.execute_script("document.getElementById('contenteditable-root').innerHTML = 'hi';") 中运行代码的整个组合:

irb

一个关于您的require 'watir' b = Watir::Browser.new b.goto 'https://youryoutubepage.com/path' File.readlines('comments.txt').each do |line| b.execute_script("document.getElementById('contenteditable-root').innerHTML = 'hi';") sleep 5 # Give yourself some time to visually confirm the changes. end 的快速Google,我发现SyntaxError: Invalid or unexpected token (Selenium::WebDriver::Error::UnknownError)不喜欢的报价可能有问题。

也许尝试反转报价:

execute_script

将来,请尝试查明问题,不要将StackOverflow用作调试代码的地方。让您的代码逐步工作,并将您的问题集中在无法正常工作的特定功能上。