当前位置: 首页 > 知识库问答 >
问题:

Selenium,了解xPath;输入vs选择;循环浏览元素

鲜于喜
2023-03-14

案例选择

/html/body/div[1]/section/div/div/div/div/form/div[1]/div/div[4]/div[2]/div/div/div/div[1]/div[1]/table/tbody/tr[20]/td[3]/div/select

案例输入

/html/body/div[1]/section/div/div/div/div/form/div[1]/div/div[4]/div[2]/div/div/div/div[1]/div[1]/table/tbody/tr[19]/td[3]/div/input

因为我不知道字段类型是什么,所以我将使用以下sytnax:

/html/body/div[1]/section/div/div/div/div/form/div[1]/div/div[4]/div[2]/div/div/div/div[1]/div[1]/table/tbody/tr[20]/td[3]/div/*

>

  • 据我所知,当我使用selenium驱动程序时。通过xpath查找\u element\u,使用路径的“*”示例,代码将返回符合条件的第一个元素<我如何使用“查找下一个”之类的词

    如何区分输入和选择字段?
    我尝试了以下操作:

    • obj.get_attribute("type")-
  • 共有2个答案

    诸葛嘉熙
    2023-03-14
    1. 而不是驱动程序。通过xpath查找元素,您可以使用驱动程序。通过xpath查找元素
      这将为您提供与传递的定位器匹配的所有元素,因此在您的情况下
    elements = driver.find_elements_by_xpath("your_xpath")
    

    元素[0]将为您提供与您的xpath匹配的第一个元素,而与您的xpath匹配的第二个元素将是元素[1]
    2),以获取您可以使用的已选择元素的标记名。tag\u name方法
    要显式选择所需元素,可以在XPath定位器中提及其标记名,以便所选元素为所需类型
    您可以使用类似于/*parent\u elements//select的方法来获取select元素,并相应地使用/*parent\u elements//input来获取输入元素
    至于get\u属性方法,cruisepandey已经让您参考了文档。我只是想澄清一下,属性不包括标记名。因此,标记名不是元素的属性属性。

    叶晋
    2023-03-14

    第一个问题:

    据我所知,当我使用selenium驱动程序时。通过xpath查找\u element\u,使用路径的“*”示例,代码将返回符合条件的第一个元素?我如何使用“查找下一个”之类的词?

    答案:是的,它将返回第一个元素,如果您需要所有元素,请切换到“查找元素”。对于这个<代码>我如何使用“查找下一个”之类的东西 -下一步是什么意思?-我假设作为下一个兄弟姐妹,如果是这样的话,那么您可以使用::followin sibling

    第二个问题:

    How can I distinguish between Input and Select field?
    

    使用xpath非常简单:-

    //input 
    

    要选择所有输入,您可以像输入[属性\u name='attribute\u value']一样使用它来区分黑白输入字段。

    //select
    

    并且可以更具建设性地使用它,例如:

    //select[attribute_name='attribute_value']
    

    现在

    I would expect return like "Select" or "Input".
    

    您可以使用标签名称,如下所示:-

    obj.tag_name
    

    打印此内容,您应该获得适当的标记名。

    Where can I find documentation related to what can I write inside "get_attribute"?
    

    get\u attribute是为指定的web元素获取属性值-

    官员们是这么说的:

    get\u attribute(name)获取元素的给定属性或属性。

    此方法将首先尝试返回具有给定名称的属性的值。如果具有该名称的属性不存在,它将返回具有相同名称的属性的值。如果没有具有该名称的属性,则返回无。

    被视为truthy的值,即等于“true”或“false”,将作为布尔值返回。所有其他非None值将作为字符串返回。对于不存在的属性或属性,将返回None。

    在这里找到官方文件get_attribute

     类似资料:
    • 统一使用 Chrome 作为 Web 开发者,我们的无论是浏览信息或者开发项目,都离不开浏览器。在本站的系列课程中,为了避免歧义,我们 要求 大家统一使用 Chrome 作为指定浏览器。 Google Chrome,是一款由 Google 公司开发的网页浏览器。Chrome 在 2008 年 9 月 2 日发布 Beta 版本,一经发布就广受好评。提供 50 种语言版本,有 Windows、OS

    • 问题内容: 以下HTML的Selenium xpath选择器将是什么: 我需要让Selenium IDE根据元素文本在列表中找到第二个项目。我以为可以解决问题,但显然没有。 问题答案: 我想这就是你要找的 而且更好

    • 问题内容: 我的代码使用selenium从下拉菜单中选择选项。我有一个看起来像这样的代码: 这样很好。但是下拉菜单中有很多选项,我希望遍历下拉菜单中的所有项目。我准备了以下代码来遍历选项: 这是行不通的。关于如何使这样的循环工作的任何建议?我不了解python中的循环吗? 谢谢。 问题答案: 这应该为您工作。该代码将 查找元素 迭代以从下拉列表中获取所有选项 遍历列表 对于列表中的每个项目,选择当

    • 最近,我有了一个无头网络驱动程序,并一直在修补一些。目前,我无法通过xpath定位元素并更改其文本。下面,我试图将“entertexthere”返回控制台,然后将文本更改为类似“helloworld”的内容,然后显示新更改的元素文本。 超文本标记语言: 选择xpath后,我得到以下结果: 这一切都很好,但我对如何修改文本感到困惑。尝试在变量中存储“此处输入文本”我尝试了: 蟒蛇: 任何帮助或见解将

    • https://imgur.com/vfhp8n7.png 当我单击B按钮时,整行隐藏 我需要硒来点击B按钮,然后点击下一个B按钮 我想执行,但是数字4352,6820每次都不一样 你有什么想法吗? 编辑

    • 我已经确认xpath可以使用测试xpath的Google Chrome插件工作。这是xpath: //meta[@property='og:url']/@内容 这是与其他xpath一起使用的代码行,所以我知道唯一的变量是当前的xpath: 但是当我运行Python Selenium脚本时,我得到了一个错误: 选择器“”无效。它应该是元素 我只能使用可见的XPath吗?如何选择需要查看页面源的隐藏元