2013-04-17 96 views
1

我想单击使用硒和python的单选按钮。如何使用硒选择单选按钮

<input type="radio" name="tweet_target_1" value="website" class="tweet-website-button radio-selection-validate serialize-me newline-before field-order-15"> 

website = driver.find_element(name="tweet_target_1") 
website.click() 

,但它不是让我点击它。我怎样才能点击使用组合的名称,价值或类,价值等?

有没有关于如何使用硒的信息的很好的来源?因为我发现的大部分是在java上,而我正在使用python。

编辑:使用XPATH

我试图

website = driver.find_elements(By.XPATH, "//form[@id='dmca_form' and @class='twitter-form custom-form']/div[20][@class='list-container']/div[1][@class='list-item']/div[7][@class='clearfix inf-tweet init-hide']/div[@class='input']/ul[@class='options']/li[2]/label/input[@class='tweet-website-button radio-selection-validate serialize-me newline-before field-order-15']/") 
website.click() 

我不断收到

AttributeError: 'list' object has no attribute 'click'

回答

1

我不知道你在哪里发现,说你可以调用文档find_element就是这样,但你应该做driver.find_element_by_name("tweet_target_1")driver.find_element(By.NAME, "tweet_target_1")(当然有第一个进口By)。另外,Selenium Java代码很容易转换为Python代码;它遵循一些非常简单的转换规则,如果您仍然有问题,库本身的所有代码也将在您的机器上查看。

+0

也许我正在使用不同版本的硒,但它不适用于我我一直得到'website = driver.find_element(By.NAME,“tweet_target_1”) NameError:name'By'is not defined'。此外,我需要能够通过BOTH名称/ ID和值找到一个元素。 –

+1

您是否从selenium.webdriver.common.by首先导入By?是的,这就是为什么有'find_element_by_name'和'find_element_by_id',以及'By.NAME'和'By.ID'。 'By.ID'实际上也是'find_element'的默认值... –

+0

好的你是对的。但是没有价值选择吗?正如你可以看到上面是一个单选按钮,只有名称和值。我不能选择名称,因为有多个选项,我不能上课,因为它显示了其他地方。是不是按名称选择然后按值单击的选项? –

2

我知道这可能有点太晚了,但我刚刚加入。

提示:使用,Firebug和Firepath。找到单选按钮并找出相关元素的xpath。

website = driver.find_element_by_xpath(".//**") 
website.click() 

OR

website = driver.find_element_by_xpath(".//**").click() 

这应该工作的所有尝试的时间。此外,只使用from selenium import webdriver 应使click()函数正常工作。

+0

Hi @grizzlyBearGrouser,您可能想要格式化代码示例,代码块缩进四个空格,以及使用反引号代码(例如'code')的一个小提示 – robjohncox

+0

@robjohncox:嗨,感谢您的提示。请记住从这里开始。 – grizzlyBearGrouser