我正在使用selenium和phantomjs,我想学习如何正确点击复选框。例如:https://www.udacity.com/courses/android
我想检查"免费课程",所以我尝试了这个:
from selenium import webdriver
from selenium.webdriver.common.by import By
def __init__(self):
self.driver = webdriver.PhantomJS(executable_path='/usr/local/bin/phantomjs')
def parse(self, response):
self.driver.get(response.url)
element = self.driver.find_element(By.XPATH, '//div[@class="checkbox"]/label[contains(.,"Free Courses")]')
self.driver.execute_script("arguments[0].click();", element)
问题在于它似乎没有点击任何内容:使用self.driver.save_screenshot('screenshot.png')
制作屏幕截图,它会提供所有结果,而不会过滤。
这是我做错了吗?
答案 0 :(得分:0)
当您想要点击xpath
元素时,label
找到checkbox
元素,正如我在您提供的website中看到的那样,无需创建xpath
选中Free Course
复选框,您只需使用By.NAME
找到此复选框,如下所示: -
from selenium import webdriver
from selenium.webdriver.common.by import By
def __init__(self):
self.driver = webdriver.PhantomJS(executable_path='/usr/local/bin/phantomjs')
def parse(self, response):
self.driver.get(response.url)
element = self.driver.find_element(By.NAME, 'Free Course')
element.click()
注意: - Selenium提供click()
功能来执行元素点击,因此如果您只是执行操作,则无需使用execute_script
来执行javascript点击这是通过使用click()
函数。
希望它有帮助...:)