【问题标题】:Selenium - multiple tagsSelenium - 多个标签
【发布时间】:2017-12-06 23:21:55
【问题描述】:

我正在为一位朋友编写一个脚本来稍微自动化她的工作流程,并且我正在使用 selenium 和 python。 在一个网站上,我有一个如下所示的单选按钮部分:

<br/>
<input id="orgtype" name="orgtype" value="euk" onclick="setvalue('orgtype','euk'); setvalue('Dcut-noTM',Dcut_noTM()); setvalue('Dcut-TM',Dcut_TM());" checked="" type="radio"/>
  Eukaryotes
<br/>
<input id="orgtype" name="orgtype" value="gram-" onclick="setvalue('orgtype','gram-'); setvalue('Dcut-noTM',Dcut_noTM()); setvalue('Dcut-TM',Dcut_TM());" type="radio"/>
  Gram-negative bacteria
<br/>
<input id="orgtype" name="orgtype" value="gram+" onclick="setvalue('orgtype','gram+'); setvalue('Dcut-noTM',Dcut_noTM()); setvalue('Dcut-TM',Dcut_TM());" type="radio"/>
  Gram-positive bacteria
<br/>

我正在尝试选择值为“gram-”的中间选项。我想知道是否有人可以帮助我(或指向一个关于如何的非常简单的教程)通过 xpath 找到正确的元素?总的来说我知道你会写(例如:

user = browser.find_element_by_css_selector('#email')

但我不确定如何查找具有多个标签的元素。

谢谢你:)

【问题讨论】:

  • user = browser.find_element_by_xpath('//input[@value="gram-"]'),应该可以工作
  • @Stack 有效!谢谢!只是出于好奇(和未来的努力),您将如何使用“输入”和“价值”?
  • 您可以使用 chrome inspect tab 来检查 xpath ,这里是学习 XPATH google.co.in/… 的好资源。很简单
  • @theMicroGirl 您能否将答案标记为正确以结束问题(如讨论here):)

标签: python selenium xpath radio-button radiobuttonlist


【解决方案1】:

css 选择器:

#orgtype[value='gram-']

或通过 xPath

//input[@value= 'gram-']

通过包含Gram-negative的文本查找:

//text()[contains(.,'Gram-negative')]/preceding-sibling::input[1]

【讨论】:

    【解决方案2】:

    快速解决方案:

    使用browser.find_element_by_xpath("//input[@value='gram-']")。 说明:

    // - 从当前节点(文档的根)开始选择文档中任意位置的元素。

    //input - 选择文档中任意位置的所有输入元素。

    [@value='gram-'] - 选择 value 设置为 gram- 的元素。

    //input[@value='gram-'] - 使用value="gram-" 选择文档中任意位置的每个input 元素。

    XPath 教程:

    XPath Tutorial on W3Schools

    XPath Syntax Overview

    【讨论】:

      【解决方案3】:

      正如@Stack 在 cmets 中所说,您应该使用 find_element_by_xpath。如果您不确定如何编写 xpath,Chrome 有一个方便的选项来显示所选元素的 XPath。如果你打开开发者工具(Ctrl + Shift + I)并在源中找到元素,你可以右键单击,复制,复制XPath。

      这只是一个快速修复。您应该考虑学习 XPath 的工作原理。

      【讨论】:

      • 请记住,Chrome 生成的 XPath 远非理想,不一定是独一无二的!
      • 我根据提问者提供的 HTML 创建了一个演示站点,Chrome 生成了这个 XPath //*[@id="orgtype"],它不直接引用我选择的对象,也是通用的方式(选择 every 元素与id="orgtype",我们有 3 个)。我知道 ID应该是唯一的,但正如我们所见,它们不一定。
      猜你喜欢
      • 2018-07-10
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多