from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
检测百度页面搜索按钮是否存在,存在就输入关键词“自学网 Selenium” 然后点击搜索
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
driver=webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_css_selector(".s_ipt").send_keys("自学网 Selenium")
sleep(2)
#显示等待--判断搜索按钮是否存在
element=WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,"su")))
element.click()
sleep(3)
driver.quit()
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from time import sleep,ctime
driver=webdriver.Firefox()
driver.get("http://www.baidu.com")
sleep(2)
driver.implicitly_wait(5) #隐式等待时间设定 5秒
#检测搜索框是否存在
try:
print(ctime())
driver.find_element_by_css_selector("#kw22").send_keys("Python")
except NoSuchElementException as msg:
print(msg)
finally:
print(ctime())
sleep(3)
driver.quit()
#用displayed 来判断元素是否显示
print(ctime)
for i in range(10):
el=driver.find_element_by_id("kw23")
try:
if el.isdisplyed():
break
except:pass
else: #注意 有try except嵌套时,if else 不一定是和if对其
print("timeout")
print(ctime())
在实际项目过程中,会经常遇到页面的各自复选框,那么使用selenium该如何操作这些选项框呢?
<html>
<head>
<title>
</title>
</head>
<body>
<p><input type="checkbox" name="category" value="今日话题" />今日话题 </p>
<p><input type="checkbox" name="category" value="视觉焦点" />视觉焦点</p>
<p><input type="checkbox" name="category" value="财经" />财经</p>
<p><input type="checkbox" name="category" value="汽车" />汽车</p>
<p><input id="btnOperate" type="button" value="选择" onclick="static_num()" /></p>
</body>
</html>
tag获取页面中所有的标签为input的元素 elements 多了一个“s” 这样可以获取一组元素
inputs=driver.find_elements_by_tag_name("input")
print("复选框的个数为")
print(len(inputs))
#xpath获取元素
#inputs=driver.find_elements_by_xpath("//input[@type='checkbox']")
#通过css来定位
#inputs=driver.find_elements_by_css_selector("input[type=checkbox]")
for i in inputs:
if i.get_attribute("type")=="checkbox": #获取元素属性为checkbox
i.click() #勾选方框
time.sleep(1)
#去掉最后一个选修的勾
driver.find_elements_by_xpath("//input[@type='checkbox']").pop(-1).click()
#pop(-1)获取最后一个,pop(0)获取第一个