【问题标题】:How to use python selenium find_element_by_xpath find out above key word如何使用 python selenium find_element_by_xpath 找出上面的关键字
【发布时间】:2018-12-02 01:26:09
【问题描述】:

我正在寻找一个字符串。但这似乎不起作用。

HTML:

<form name="form1" method="post" action="?cz=del&wbid=7683290543&zjt=aaa&lx=CNAME&xl=%C4%AC%C8%CF&fs=" onSubmit="return b_ifsf('delete?');" id="form1">
<td style="width:120px">
<input type="hidden" name="ip" value="aaa.xxx.com.a.bdydns.com." >
<input type="submit" name="rpt$btnDelete" value="delete" />
</td>
</form>
<form name="form1" method="post" action="?cz=del&wbid=2324242122&zjt=bbb&lx=CNAME&xl=%C4%AC%C8%CF&fs=" onSubmit="return b_ifsf('delete?');" id="form1">
<td style="width:120px">
<input type="hidden" name="ip" value="bbb.xxx.com.a.bdydns.com." >
<input type="submit" name="rpt$btnDelete" value="delete" />
</td>
</form>
<form name="form1" method="post" action="?cz=del&wbid=2324242553&zjt=ccc&lx=CNAME&xl=%C4%AC%C8%CF&fs=" onSubmit="return b_ifsf('delete?');" id="form1">
<td style="width:120px">
<input type="hidden" name="ip" value="ccc.xxx.com.a.bdydns.com." >
<input type="submit" name="rpt$btnDelete" value="delete" />
</td>
</form>

如何找到关键字bbb.xxx.com.a.bdydns.com.然后点击提交删除?

【问题讨论】:

  • 嗨,欢迎来到 StackOverflow。请阅读stackoverflow.com/help/how-to-ask
  • 这不是连续的 HTML 摘录,是吗?请张贴,包括&lt;form&gt;
  • 如果可能,请显示您的代码、更多 html 和 URL。

标签: python selenium selenium-webdriver xpath web-scraping


【解决方案1】:

@EVNRaja 的解决方案方向正确。

要找到文本 bbb.xxx.com.a.bdydns.com.,然后单击具有 value 属性的关联元素作为 delete您可以使用以下任一解决方案:

  • 使用 xpathclick():

    driver.find_element_by_xpath("//form[@id='form1' and @name='form1']//input[@name='ip' and @value='bbb.xxx.com.a.bdydns.com.']//following::input[1]").click()
    
  • 使用 xpathsubmit():

    driver.find_element_by_xpath("//form[@id='form1' and @name='form1']//input[@name='ip' and @value='bbb.xxx.com.a.bdydns.com.']//following::input[1]").submit()
    

【讨论】:

  • following::input[1] .... 在 bbb.xxx.com .... 如果删除 ccc.xxx.com 它将是following::input[2] .... . ... may be input[2] or input[3] ........ 所以它可能无法在程序中工作.....
  • 好吧,,无论是 aaa.xxx.com.a.bdydns.com.bbb.xxx.com.a.bdydns.com. 还是 ccc.xxx.com.a.bdydns.com.,这是我们识别引用 &lt;input&gt; 节点的主要标准,将始终其次是各自删除相关的&lt;input&gt; 行。所以这个解决方案可以完美运行。
  • HI .... 是工作认为 .... driver.find_element_by_xpath('//input[contains(@value, "ddd.XXX.cc.a.bdydns.com.")]//following::input[1]').click()
【解决方案2】:

您尝试识别的 URL 被引用为隐藏元素。

您提供的html代码: &lt;input type="hidden" name="ip" value="bbb.xxx.com.a.bdydns.com." &gt;

浏览器中所有隐藏的元素都可能有目的。 示例:

假设有文本字段并且它没有输入数值,如果最终用户输入任何数值,文本字段旁边将显示错误代码。 在这里,在我们输入数字文本之前,错误消息(html 标签元素内的文本)将被隐藏。

在您分享的 html 代码中,您要检查的值在输入标签内被引用并且有一个type="hidden" name="ip" value="bbb.xxx.com.a.bdydns.com.",我们可以编写一个复合 xpath 如下:

具有多个复合语句的示例: //input[@type = 'hidden' and @name = 'ip' and contains(@value, 'bbb.xxx.com.a.bdydns.com.')]/following-sibling::input

或 一个简单的例子: //input[contains(@value, 'bbb.xxx.com.a.bdydns.com.')]/following-sibling::input

有了这个xpath代码,我们可以直接识别提交,在下一步你可以点击按钮。

【讨论】:

    【解决方案3】:

    您应该能够使用以下 CSS 选择器组合:

    [value='bbb.xxx.com.a.bdydns.com.'] + input
    

    代码:

    driver.find_element_by_css_selector("[value='bbb.xxx.com.a.bdydns.com.'] + input").click() #.submit()
    

    第一部分是一个attribute = value css选择器,然后“+”是一个adjacent sibling combinator,然后是一个元素选择器;说,找到input标签元素,它是与属性value的元素相邻的兄弟元素,其值为bbb.xxx.com.a.bdydns.com.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      相关资源
      最近更新 更多