繁体   English   中英

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

[英]How to locate the element as per the html provided through Selenium, Python and Xpath

我正在使用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 / pseudo / comment / iframe的子代。XPath不支持它们。” 如果有帮助

根据您共享以在文本框中单击的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() 

在浏览器中打开网页,例如chrome。 在文本框中按鼠标右键,然后选择检查菜单。 在oped开发工具中,查看您的文本框是否具有父iframe元素。 一种方法:

  1. 在Chrome开发工具中单击内部,然后按Ctrl + F
  2. 在打开的搜索字段中,复制iframe input.black_ar

如果您首先要切换到此框架函数以在python,selenium中切换框架

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

您是否尝试过driver.find_element_by_xpath("//input[@id='type']").click();

您都可以在浏览器中按F12或使用开发人员工具进行检查; 之后按Ctrl+f并输入//iframe然后尝试查看该页是否存在。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM