selenium 3.8.0 入门第二课 进阶的导航

作者: 别摸我蒙哥 | 来源:发表于2018-02-08 14:23 被阅读54次

要进行各种导航第一件做的事情就是打开浏览器窗口。最简单的方式就是通过 get 方法打开。
在 driver.get('http://www.baidu.com')过程中,WebDriver 持续保持控制权在页面被完全加载前。
但是如果页面中有很多 AJAX 在同时加载,WebDriver 根本无法感知其是否加载完毕,这个时候就需要用到 waits 方法,具体在 selenium 之等待元素 详细讲述。

与页面的交互

一、获取元素

WebDriver 提供了许多方式来寻找元素,实现与页面的交互。
详细的说,共有以下几种方法:(都是以 find_element_by_ 开头)

  • find_element_by_id
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_lind_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector
    这些方法返回的都是第一个匹配到的元素,如果想返回所有匹配的结果

find_element_by_* 改成 find_elements_by_*

上面的方法同时可以通过以下形式表现:
find_element 和 find_elements

具体使用方法

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//*[@id='login']/div/p/li[1]')

以下是 By 类对应的所有查找方式:
ID , XPATH, LINK_TEXT, PARTIAL_LINK_TEXT,NAME,TAG_NAME,CLASS_NAME,CSS_SELECTOR

两种方式对比,只是使用方式不同

第一种方式 第二种方式
*_by_id By.ID
*_by_xpath By.XPATH
*_by_link_text By.LINK_TEXT
... ...

此时会有同学问,这几个查找元素的方法有什么不同吗?什么场景下使用那种方式更方便?答案是有,而且不同方法区别还挺大,具体的方式在另一篇文章中详细讲述。

二、操作元素

获取元素后,怎么操作呢?

比如说我们想输入文本到文本框中,然后再模拟键盘上回车键:

element.clear()
element.send_keys(' and some')
element.send_keys(' and some', Keys.RETURN)

理论上,我们可以对任何一个元素调用 send_keys,这就允许 Selenium 模拟在浏览器中使用快捷键

三、填充表单

如果表单是单选框,我们可以通过 element.click() 方式直接点击,但是如果表单是多个选项,这个时候,再一个个遍历出来元素,模拟点击操作,就会显得很呆瓜。

WebDriver 提供了 Select 的方法来跟表单进行交互。

参考至:http://selenium-python.readthedocs.io/navigating.html

相关文章

网友评论

本文标题:selenium 3.8.0 入门第二课 进阶的导航

本文链接:https://www.haomeiwen.com/subject/xsxzwxtx.html