在html页面上选择表单字段

时间:2019-05-17 10:31:36

标签: javascript html xpath

我正在尝试准备我的第一个Greasmonkey脚本(没有javascript /网站技术方面的经验),并且在选择页面上的字段时遇到问题。它是:

<input data-testid="user/fullName" autocomplete="name" class="form-control u-text-normal">

我已经测试过:

  1. document.querySelectorAll("input.form-control");
  2. document.querySelectorAll("input.form-control.u-text-normal");
  3. document.getElementById("user/fullName").value

但是他们都不在返回我所需要的...而我所需要的是用脚本填充该表单字段的可能性。你能帮忙吗?

编辑: 以下答案中给出的方法试图在浏览器控制台中运行,但它们不返回任何元素。也许有人可以尝试运行它并告诉我我做错了什么?该网站是pizza site上的购物车:)但是要看到它,您需要将比萨饼添加到购物车(“ Do koszyka”)中至少20兹罗提,然后付款(“ Do kasy”)。然后,我想在开始时填写第一个字段“ Imie i nazwisko”。

5 个答案:

答案 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网站有效:

enter image description here

但是使用right click> inspect element找到它后,控制台看起来像dom输入元素-奇怪