GVKun编程网logo

无论selenium中的帧如何,如何选择html元素?(selenium 选择框)

12

对于想了解无论selenium中的帧如何,如何选择html元素?的读者,本文将是一篇不可错过的文章,我们将详细介绍selenium选择框,并且为您提供关于html–在Selenium中设置隐藏的输入值

对于想了解无论selenium中的帧如何,如何选择html元素?的读者,本文将是一篇不可错过的文章,我们将详细介绍selenium 选择框,并且为您提供关于html – 在Selenium中设置隐藏的输入值?、HTML,Javascript:当用户将HTML元素滚动到视图中时,如何加载HTML元素?、Python Selenium,如何删除元素?、Python+Selenium中级篇之-二次封装Selenium中几个方法的有价值信息。

本文目录一览:

无论selenium中的帧如何,如何选择html元素?(selenium 选择框)

无论selenium中的帧如何,如何选择html元素?(selenium 选择框)

我正在尝试选择一个位于iframe中并且可能位于其他iframe中的元素。

是否可以在不选择iframe的情况下以某种方式在(python)selenium中的某个(sub)iframe中选择元素?有没有办法以某种方式“遍历”每个iframe并检查在哪里可以找到我的元素…?

以及在元素和html内容以及iframe可能只是被加载的情况下该怎么做…?

答案1

小编典典

WebElement 在不切换到各自的情况下,不可能与iframe直通内的任何物体相互作用。
Seleniumiframe

原因:

加载页面后, Selenium 默认情况下,焦点会停留在上 Top Window 。在 Top Window 包含了其他
iframesframesets
。因此,当我们需要与WebElementiframe中的a进行互动时,我们必须iframe通过以下一种方法切换到相应的方法:

帧切换方法:

我们可以通过3种方式切换到帧。

按框架名称

Name iframe的属性,我们可以通过该属性切换到它。

例:

driver.switch_to.frame("iframe_name")

按帧ID

ID iframe的属性,我们可以通过该属性切换到它。

例:

driver.switch_to.frame("iframe_id")

按帧索引

假设页面中有10个框架,我们可以使用索引切换到iframe。

例:

driver.switch_to.frame(0)driver.switch_to.frame(1)

切换回主机

我们可以使用 default_content() 或切换回主机 parent_frame()

例:

driver.switch_to.default_content()driver.switch_to.parent_frame()

切换框架的更好方法:

切换帧的更好方法将是诱使 WebDriverWait 预期帧的可用性 expected_conditions 设置
frame_to_be_available_and_switch_to_it 为:

  • 通过 Frame ID

    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.ID,"id_of_iframe"))
  • 通过 Frame Name

    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.NAME,"name_of_iframe"))
  • 通过 Frame Xpath

    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.XPATH,"xpath_of_iframe"))
  • 通过 Frame CSS

    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.CSS_SELECTOR,"css_of_iframe"))

html – 在Selenium中设置隐藏的输入值?

html – 在Selenium中设置隐藏的输入值?

我们在表单上隐藏了输入字段,我们需要Selenium来设置这些字段的值.通过Selenium IDE设置隐藏输入值的最佳方法是什么?

解决方法

我找到的最简单方法:

命令:runScript

值:

javascript{this.browserbot.getCurrentwindow().document.getElementById('hiddenElementId').value='TheValue'}

HTML,Javascript:当用户将HTML元素滚动到视图中时,如何加载HTML元素?

HTML,Javascript:当用户将HTML元素滚动到视图中时,如何加载HTML元素?

比如,在我的例子中,每个页面底部的元素都有一个disqus评论帖子.仅这些就可以在每个页面上加载几秒钟,如果只有在用户实际查看它们时才能加载它们,这将大大提高性能.

解决方法

我打算建议处理滚动事件,然后检查相关元素是否已移入视口,但在研究时我发现了这个:

jquery-appear – 当元素变得可见时调用函数的jQuery插件

(通过SO:jQuery – Check if element is visible after scroling的另一个问题)

Python Selenium,如何删除元素?

Python Selenium,如何删除元素?

我一直在尝试最后一小时删除元素,但没有成功。而且该元素只能通过类名来访问。我试过了:

js = "var aa=document.getElementsByClassName(''classname'')[0];aa.parentNode.removeChild(aa)"driver.execute_script(js)

我收到未定义parentNode的错误。

那么,使用Selenium删除元素的最佳方法是什么?

答案1

小编典典

getElementByClassName不是的方法document。您将要使用

getElementsByClassName(''classname'')[0]...

但前提是您确定它是该课程中唯一的课程。

Python+Selenium中级篇之-二次封装Selenium中几个方法

Python+Selenium中级篇之-二次封装Selenium中几个方法

 

 

 本文来介绍,如何把常用的几个webdriver的方法封装到自己写的一个类中去,这个封装过程叫二次封装Selenium方法。我们把打开站点,浏览器前进和后退,关闭和退出浏览器这这个方法封装到一个新写的类中去。

我们按照如下层次结构在PyCharm中新建两个包和两个.py文件:

 

 

      上图,baidu_search.py是我们编写测试脚本的python文件,具体测试代码写在这个文件。包test1下的basepage.py文件是这次我们介绍的二次封装selenium方法而新建的。这里提一下,python中默认规则,包名和文件名都是小写,类名称单词首字母大写,函数名称小写,多个字母下划线隔开。我们尽量遵守下这个不成文的约定。

来看看basepage.py的内容:

上面的''''''''''''是文档注释,一般在类的开始和函数的开始,用两个''''''''''''括起来,简单描述下这个类或者函数的功能。

 

接下来看看,我们脚本文件中如何去调用我们自己封装过的方法。

baidu_search.py的内容如下:

上面self.basepage的几行代码就是调用我们自己封装的方法去执行相关webdriver操作。这个只是一个简单的封装介绍,等后面,我们介绍了字符串切割,我们会再次介绍二次封装Selenium方法,例如将会把八大find_element方法封装到一个方法里去。

 

关于无论selenium中的帧如何,如何选择html元素?selenium 选择框的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于html – 在Selenium中设置隐藏的输入值?、HTML,Javascript:当用户将HTML元素滚动到视图中时,如何加载HTML元素?、Python Selenium,如何删除元素?、Python+Selenium中级篇之-二次封装Selenium中几个方法的相关知识,请在本站寻找。

本文标签: