提问者:小点点

如何根据通过Selenium,Python和Xpath提供的html定位元素


我正在使用selenium来填充Web表单,但由于某种原因,这个特定的文本框给我带来了麻烦。它的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/伪/注释/iframe的孩子。XPath不支持它们。”如果这有帮助


共3个答案

匿名用户

根据您共享的超文本标记语言单击文本框,您可以使用以下任一解决方案:

>

  • x路径

    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()
    

  • 匿名用户

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

    匿名用户

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

    1. 单击chrome开发工具内部并按ctrl f
    2. 在打开的搜索字段中复制iframe输入。black_ar

    如果你有第一次切换到这个帧函数在python中切换帧,selenium

    要查找输入,请使用驱动程序。find_element_by_css_selector('input.black_ar')

    相关问题