我正在尝试准备我的第一个Greasmonkey脚本(没有javascript /网站技术方面的经验),并且在选择页面上的字段时遇到问题。它是:
<input data-testid="user/fullName" autocomplete="name" class="form-control u-text-normal">
我已经测试过:
document.querySelectorAll("input.form-control");
document.querySelectorAll("input.form-control.u-text-normal");
document.getElementById("user/fullName").value
但是他们都不在返回我所需要的...而我所需要的是用脚本填充该表单字段的可能性。你能帮忙吗?
编辑: 以下答案中给出的方法试图在浏览器控制台中运行,但它们不返回任何元素。也许有人可以尝试运行它并告诉我我做错了什么?该网站是pizza site上的购物车:)但是要看到它,您需要将比萨饼添加到购物车(“ Do koszyka”)中至少20兹罗提,然后付款(“ Do kasy”)。然后,我想在开始时填写第一个字段“ Imie i nazwisko”。
答案 0 :(得分:0)
如果需要获取单个元素,请给html元素一个id示例:
from reportlab.lib.pagesizes import A4, landscape
from reportlab.lib.units import inch
from reportlab.lib.styles import ParagraphStyle
from reportlab.platypus import *
if __name__ == "__main__":
style_1 = ParagraphStyle(name='Stylo',
fontName='Helvetica',
fontSize=20,
leading=12)
doc = BaseDocTemplate('test_spacer.pdf', showBoundary=1,
pagesize=landscape(A4), topMargin=30,
bottomMargin=30,
leftMargin=30, rightMargin=30)
frameCount = 2
frameWidth = (doc.width) / frameCount
frameHeight = doc.height - .05 * inch
frames = []
column = Frame(doc.leftMargin, doc.bottomMargin, 200, doc.height - .05* inch)
frames.append(column)
column = Frame(doc.leftMargin + 200, doc.bottomMargin, frameWidth - 200, doc.height - .05 * inch)
frames.append(column)
doc.addPageTemplates([PageTemplate(id='framess', frames=frames)])
story = []
for i, x in enumerate(['A', 'B', 'C']):
text = x*10*(i+1)
p1 = Paragraph(text, style_1)
w, h1 = p1.wrap(200, doc.height)
p2 = Paragraph(text*2, style_1)
w, h2 = p2.wrap(200, doc.height)
story.append(p1)
story.append(p2)
spac_height = ((doc.height) - (h1 + h2))
story.append(Spacer(width=0, height=spac_height))
story.append(Paragraph('This should be on the top of the 2nd Frame!' + x, style_1))
story.append(PageBreak())
doc.build(story)
然后使用
获取元素<html>
<input id='id_here'data-testid="user/fullName" autocomplete="name" class="form-control u-text-normal">
</html>
对于共享同一类的多个元素,可以使用查询选择器
document.getElementById('id_here');
答案 1 :(得分:0)
这是您想要的吗?
var example = document.querySelector('.form-control').value;
document.write(example);
<input data-testid="user/fullName" autocomplete="name" class="form-control u-text-normal" value="test">
答案 2 :(得分:0)
如果只想选择此元素,请使用最具体的内容,在这种情况下为data-testid
:
var x = document.querySelectorAll("[data-testid='user/fullName']")
console.log(x[0].value)
答案 3 :(得分:0)
选择元素(这里我们选择类和data属性是最准确的)=>
var element = document.querySelector('.form-control[data-testid="user/fullName"]');
之后,如果要在此输入中添加一些值=>
element.value = "My_value";
致谢
答案 4 :(得分:-1)
您可以添加'id'或通过querySelector选择字段
let input = document.querySelector('[data-testid="user/fullName"]')
input.value='abc';
myField.value += '123';
<input id="myField" data-testid="user/fullName" autocomplete="name" class="form-control u-text-normal">
更新
我尝试了我的方法,它在您在问题更新中提到的pizza网站有效:
但是使用right click> inspect element
找到它后,控制台看起来像dom输入元素-奇怪