<select> ... </select>源代码的CSS选择器

时间:2018-10-28 04:27:38

标签: javascript node.js css-selectors puppeteer headless-browser

以下是message = driver.execute_script(""" function getCommand() { var MSGNUM = document.getElementsByClassName("ChatBox").length -1; var MSG = document.getElementsByClassName("message-body")[MSGNUM]; MSG = MSG.innerHTML; var NAME = document.getElementsByClassName("username")[MSGNUM]; NAME = NAME.innerHTML; var COMMAND = (NAME+" "+MSG); return(COMMAND); } returngetCommand()"""); 的源代码片段。我正在努力寻找合适的选择器:

<select>

我想在Puppeteer中为<label class="control-label pull-right" style="margin-right: 10px; font-weight: 100;"> <small>Show</small>&nbsp; <select class="input-sm grid-per-pager" name="per-page"> <option value="https://www.mysite-com/admin/order?per_page=10" >10</option> <option value="https://www.mysite-com/admin/order?per_page=20" selected>20</option> <option value="https://www.mysite-com/admin/order?per_page=30" >30</option> <option value="https://www.mysite-com/admin/order?per_page=50" >50</option> <option value="https://www.mysited-com/admin/order?per_page=100" >100</option> </select> &nbsp;<small>Piece</small> </label> 选择per_page=100的选项。以下尝试的选择器不正确,错误为page.click()

node not found

2 个答案:

答案 0 :(得分:1)

HTMLOptionsCollection API

使用 HTMLOptionsCollection API 并为其分配一个<script> function inc_qty(product_name){ var qty_val = parseInt($('#qty_display_'+product_name).text()); qty_val = qty_val + 1; $('#qty_display_'+product_name).text(qty_val); } </script> 。以下演示找到了.class中的最后一个<option>,为其分配了一个<select>,并将其.class更改为background-color红色。


演示

tomato
var opts = document.querySelector('.input-sm').options;
opts[opts.length -1].classList.add('lastOpt');
document.querySelector('.lastOpt').style.background = 'tomato';

答案 1 :(得分:1)

您可以为option元素使用以下选择器:

option[value="https://www.mysited-com/admin/order?per_page=100"]

否则,如果选择器是页面上唯一一个以value结尾的per_page=100元素,则可以将选择器简化一些内容:

[value$="per_page=100"]

请注意,您可以使用内置的page.select()函数从Puppeteer的option元素中选择select,但是您需要传递{{1 }}元素和select元素的value

option