定位
Xpath定位
// 代表选取所有元素 / 代表选取子元素 * 选取任意元素 $x('//*[@id="s_tab"]//b') $x('//*[@id="s_tab"]//a') $x('//*[@id="s_tab"]//a[1]') $x('//*[@id="s_tab"]//a[last()]') id 、 name 通常是唯一的属性,不需要更复杂的表达式
CSS定位
$('.su') 定位class = "su" 的元素 $('#su') 定位id 也可以写成 $('[id=su]') $('#s_tab a') id为s_tab内部的所有a元素 $('#s_tab a:nth-child(1)') 去找a的父元素的第一个孩子,且是a $('#s_tab a:nth-last-child(1)') $('[id=s_tab] a:nth-last-child(1)')
js定位
element = self.driver.execute_script('return document.querySelector("#su")')
# 案例一:打开百度首页,输入搜索关键字,点击搜索后,跳转到搜索结果页,滑动到底部点击'下一页' import time import pytest from web.base import Base class TestJS(Base): @pytest.mark.skip def test_js_scroll(self): self.driver.get("https://www.baidu.com/") self.driver.find_element_by_id("kw").send_keys("python") # return 返回JS的结果:python,让execute_script传参 element = self.driver.execute_script('return document.querySelector("#su")') # 点击百度一下 id="su" element.click() # 滑动到最底部 self.driver.execute_script("document.documentElement.scrollTop=10000") time.sleep(3) # 点击下一页 self.driver.find_element_by_xpath("//*[@id='page']/div/a[10]").click() time.sleep(5)
等待
1. 直接等待
time.sleep(4)
2. 隐式等待self.driver.implicitly_wait(5)
3. 显式等待WebDriverWait(self.driver,10).until(expected_conditions.element_to_be_clickable((By.XPATH,'//*[@name="tj_login"]')))
切换窗口
# windows是个列表 windows = self.driver.window_handles # 切到新窗口,最后一个windows窗口 self.driver.switch_to_window(windows[-1]) # 再次回到原来的窗口 self.driver.switch_to_window(windows[0])