小编Sul*_*lli的帖子

如何操作由Chromeless中的ul和li元素组成的下拉菜单

我正面对一个由ul和li元素组成的下拉菜单:

<ul class="o_dropdown_theme_values">
    <li class="" tabindex="-1">
        <label class="myclass" tabindex="0">Category 1</label>
    </li>
    <li class="" tabindex="-1">
        <label class="myclass" tabindex="0">Category 2</label>
    </li>
    ...
</ul>
Run Code Online (Sandbox Code Playgroud)

我知道使用Chromeless修改下拉菜单的两种方法:

.evaluate((dropDownValue) => {
    select = document.querySelector('select#category1')
    select.value = dropDownValue
}, dropDownValue)
Run Code Online (Sandbox Code Playgroud)

.click('#id') 
.type("first letters of option", '#id') 
.click('#id option[value="'+dropDownValue+'"]') 
Run Code Online (Sandbox Code Playgroud)

但由于ul和li菜单的结构,我无法使用这些.

我还尝试单击菜单,然后根据需要多次按Tab键选择正确的选项,就像我用键盘导航菜单一样.但是我发送的Tab键不会被考虑在内.我能够向菜单发送一个(并且只有一个)DOWN键(而不是TAB),但仅此而已.

我怎么能操纵这种菜单?任何基于JavaScript的解决方法将不胜感激.

javascript chromeless

8
推荐指数
1
解决办法
194
查看次数

Chromeless - 在执行指令之前等待

我使用Chromeless检索网站上的一条信息并加载相应的文件:

async function run() {
  const chromeless = new Chromeless()

      const screenshot = await chromeless
        .goto('http://www.website.com')
         title = await chromeless.inputValue('input[name="title"]')

         var fs = require('fs');
         var data = fs.readFileSync(title,"utf8");
         ...
    await chromeless.end()
}
Run Code Online (Sandbox Code Playgroud)

但是当我启动脚本时,文件读取指令会立即执行,而不是等待Web爬行完成.

在javascript中,我认为我需要使用回调函数来防止这种情况,但有没有更好的方法来使用Chromeless?

javascript automation callback chromeless

6
推荐指数
1
解决办法
406
查看次数

SyntaxError:在Centos上安装chromeless nodejs时出现意外的标识符

我正在尝试使用CentOS 6在我的服务器上安装节点js包:

npm install chromeless
Run Code Online (Sandbox Code Playgroud)

但安装失败并显示以下消息:

/usr/lib/node_modules/npm/bin/npm-cli.js:79
let notifier = require('update-notifier')({pkg})
    ^^^^^^^^
SyntaxError: Unexpected identifier
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:945:3
Run Code Online (Sandbox Code Playgroud)

知道发生了什么事吗?

centos npm chromeless

6
推荐指数
0
解决办法
978
查看次数

Python:NLTK 和 TextBlob(法语)

我正在使用 NLTK 和 TextBlob 在文本中查找名词和名词短语:

from textblob import TextBlob 
import nltk

blob = TextBlob(text)
print(blob.noun_phrases)
tokenized = nltk.word_tokenize(text)
nouns = [word for (word, pos) in nltk.pos_tag(tokenized) if is_noun(pos)]
print(nouns)
Run Code Online (Sandbox Code Playgroud)

如果我的文字是英文的,这很好用,但如果我的文字是法文,那就不行了。

我无法找到如何将此代码调整为法语,我该怎么做?

是否有可以解析的所有语言的列表?

python nltk textblob

5
推荐指数
2
解决办法
8758
查看次数

querySelectorAll 请求时出现“对象引用链太长”错误

我想使用特定的 css 路径获取 DOM 中的所有元素:

var elements = await chromeless.evaluate(() => document.querySelectorAll('div a'))
console.log(elements[0].innerHTML)
console.log(elements[1].innerHTML)
Run Code Online (Sandbox Code Playgroud)

但这段代码在第一行给了我错误“对象引用链太长”

这段代码可以工作:

var element = await chromeless.evaluate(() => document.querySelectorAll('div a')[0].innerHTML)
console.log(element)
Run Code Online (Sandbox Code Playgroud)

我可能会使用一个循环来检索它们,但我不知道我的 DOM 中有多少元素有这个 css,所以我不知道要循环多少次。

获取所有所需元素的正确语法是什么?

javascript chromeless

5
推荐指数
1
解决办法
4082
查看次数

Bash sed - 在字符串中查找主题标签

基于这篇文章,我试图找到一个命令来查找一个非常复杂的字符串中的所有主题标签字(以#开头的单词):

echo "Le #cerveau d’#Einstein n’est « #Ordre des #Mopses\" » pas" | sed -e 's/^/ /g' -e 's/ [^#][^ ]*//g' -e 's/^ *//g'
Run Code Online (Sandbox Code Playgroud)

不幸的是输出是:

#cerveau #Mopses"
Run Code Online (Sandbox Code Playgroud)

代替:

#cerveau #Einstein #Ordre #Mopses
Run Code Online (Sandbox Code Playgroud)

什么应该是正确的命令?

regex linux bash sed

2
推荐指数
1
解决办法
1811
查看次数

如何使用Casperjs和fillSelectors选择下拉选项

我有以下表格:

<form name="security_page_toplevel_page_itsec_settings" method="post" action="options.php">
    <select id="itsec_strong_passwords_roll" name="itsec_strong_passwords[roll]">
        <option value="admin">admin</option>
        <option value="subscriber">subscriber</option>
    </select>
</form>
Run Code Online (Sandbox Code Playgroud)

但我无法使用以下代码选择"订户"选项:

this.fillSelectors('form#security_page_toplevel_page_itsec_settings', {
    'select[name="itsec_strong_passwords[roll]"]': 'subscriber'
}, true);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

javascript forms html-select casperjs

1
推荐指数
1
解决办法
6715
查看次数