# 选择元素：
​ 1.基本用法​ 2.css选择​ 3.xpath选择 

# 操控元素 `点击元素` 非常简单，就是调用元素WebElement对象的 click方法。 当我们调用 WebElement 对象的 click 方法去点击 元素的时候， 浏览器接收到自动化命令，点击的 是该元素的 `中心点` 位置 。 `输入字符串` 也非常简单，就是调用元素WebElement对象的send_keys方法。 WebElement对象的 `text` 属性，可以获取元素 `展示在界面上的` 文本内容。 WebElement对象的 `get_attribute` 方法来获取元素的属性值。 关闭浏览器窗口可以调用WebDriver对象的 quit 方法，像 wd.quit() 这样。 要获取整个元素对应的HTML文本内容，可以使用 `element.get_attribute('outerHTML')` 如果，只是想获取某个元素 `内部` 的HTML文本内容，可以使用 `element.get_attribute('innerHTML')` 对于input输入框的元素，要获取里面的输入文本，用text属性是不行的，这时可以使用 `element.get_attribute('value')` 通过WebElement对象的 `text` 属性，可以获取元素 `展示在界面上的` 文本内容。 但是，有时候，元素的文本内容没有展示在界面上，或者没有完全完全展示在界面上。 这时，用WebElement对象的text属性，获取文本内容，就会有问题。 出现这种情况，可以尝试使用 `element.get_attribute('innerText')` ，或者 `element.get_attribute('textContent')` 鼠标右键点击、双击、移动鼠标到某个元素、鼠标拖拽等。 这些操作，可以通过 Selenium 提供的 `ActionChains` 类来实现。 还有很多，具体查看 `ActionChains` 类 # 窗口切换 ### 嵌入式html切换 在html语法中，frame 元素 或者iframe元素的内部 会包含一个 **被嵌入的** 另一份html文档。 在我们使用selenium打开一个网页是， 我们的操作范围 缺省是当前的 html ， 并不包含被嵌入的html文档里面的内容。 如果我们要 操作 被嵌入的 html 文档 中的元素， 就必须 `切换操作范围` 到 被嵌入的文档中。 使用 WebDriver 对象的 switch_to 属性，像这样 ```py wd.switch_to.frame(frame_reference) ``` 其中， frame_reference 可以是 frame 元素的属性 name 或者 ID 。 ### 窗口切换 可以使用Webdriver对象的switch_to属性的 window方法，如下所示： ```py wd.switch_to.window(handle) ``` 参数handle需要传入浏览器里面**所有的窗口句柄**。句柄可以想象成ID # 选择框 #### radio框直接用WebElement的click方法，模拟用户点击就可以了。 #### checkbox框先把已经选中的选项全部点击一下，再选择 #### select单选框： 不管原来选的是什么，直接通过 select_by_visible_text 方法选择即可。 ##### 导入select类 ```python from selenium.webdriver.support.ui import Select ``` #### Select多选框： 可以用select类 的deselect_all方法，清除所有已经选中的选项。 然后再通过 select_by_visible_text 方法选择。 ## 特殊小技巧 ###### 在 ***开发者工具栏 console*** 里面执行如下js代码 ```js setTimeout(function(){debugger}, 5000) ``` 会使浏览器在5000毫秒后进入debug状态，相当于冻结，但此状态可以用开发者工具。 ##### 窗口大小 有时间我们需要获取窗口的属性和相应的信息，并对窗口进行控制 - 获取窗口大小 ```py driver.get_window_size() ``` - 改变窗口大小 ```py driver.set_window_size(x, y) ``` ##### 获取当前窗口标题 浏览网页的时候，我们的窗口标题是不断变化的，可以使用WebDriver的title属性来获取当前窗口的标题栏字符串。 ```py driver.title ``` ##### 获取当前窗口URL地址 ```py driver.current_url ``` # 弹出对话框 ### 注意：弹出的对话框不是html里面的 ### Alert弹出框： Alert 弹出框，目的就是显示通知信息，只需用户看完信息后，点击 OK（确定） 就可以了，如下 ```py driver.switch_to.alert.accept() ``` 如果程序要获取弹出对话框中的信息内容， 可以通过 如下代码 ```py driver.switch_to.alert.text ``` ### Confirm弹出框： Confirm弹出框，主要是让用户确认是否要进行某个操作。 如果我们想点击 OK 按钮， 还是用刚才的 accept方法，如下 ```py driver.switch_to.alert.accept() ``` 如果我们想点击 Cancel 按钮， 可以用 dismiss方法，如下 ```py driver.switch_to.alert.dismiss() ``` 如果程序要获取弹出对话框中的信息内容，和上面的 Alert 弹出框的方法一样 ### Prompt弹出框： 出现 Prompt 弹出框 是需要用户输入一些信息，提交上去。 可以调用如下方法 ```py driver.switch_to.alert.send_keys() ``` 其他的和上面的一样