【问题标题】:How to locate the element as per the html provided through Selenium, Python and Xpath如何根据 Selenium、Python 和 Xpath 提供的 html 定位元素
【发布时间】:2018-08-23 21:56:01
【问题描述】:

我正在使用 selenium 填写网络表单,但由于某种原因,这个特定的文本框给我带来了麻烦。它的 html 是:

<input type="text" class="black_ar" value="" size="25" id="type" name="type" 
onmouseover="showTip(this.id)" onmouseout="hideTip(this.id)" 
onblur="trimByAutoTag(this);onSubTypeChangeUnit('className',this,'unitSpan')" 
autocomplete="off" title="">

我用过:

driver.find_element_by_name('type').click() 

driver.find_element_by_xpath('xpath').click() 

但是他们都说找不到元素。我不确定它是否在 iframe 中(如果有人知道检查方法)并且正在使用 chropath 这是一个 chrome 扩展来查找元素的 xpath。

编辑:chropath 在相对 xpath 下说“它可能是 svg/pseudo/comment/iframe 的子级。XPath 不支持它们。”如果有帮助

【问题讨论】:

  • 那么您的问题是关于元素是否包含在 iFrame 中?

标签: python selenium selenium-webdriver xpath webdriver


【解决方案1】:

根据您共享的 HTML,您可以在 文本框 内单击,您可以使用以下任一解决方案:

  • xpath:

    driver.find_element_by_xpath("//input[@class='black_ar' and @id='type']").click()
    
  • css_selector:

    driver.find_element_by_css_selector("input.black_ar#type").click()
    

【讨论】:

    【解决方案2】:

    现在ChroPath 支持 iframe。因此,如果您检查任何元素并且该元素在 iframe 内,ChroPath 将告诉该元素在 iframe 内,并生成相对 xpath。

    【讨论】:

      【解决方案3】:

      在浏览器中打开您的页面,比如说 chrome。按右键单击文本框并选择 inspect 菜单。在 oped 开发工具中查看您的文本框是否具有父 iframe 元素。一种方法:

      1. 在 chrome 开发工具中单击并按 ctrl+f
      2. 在打开的搜索字段中复制iframe input.black_ar

      如果你有先切换到这个框架function for switching frames in python, selenium

      要找到您的输入,请使用driver.find_element_by_css_selector(‘input.black_ar’)

      【讨论】:

        【解决方案4】:

        你试过了吗,driver.find_element_by_xpath("//input[@id='type']").click();

        您可以在浏览器中按F12 或前往开发者工具查看;然后按Ctrl+f 并输入//iframe 并尝试查看它是否存在于页面中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-30
          • 2019-02-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多