import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome()
browser.get('https://wj.qq.com/s/2214142/51db') # survey link
# First page - click "Next" button, it works
button = browser.find_element_by_class_name('survey_nextpage') # it works
button.click()
# Second page - click one of the scale button between 1-5
# it always clicks the first button found. how to set to randomly
# choose from one of the five buttons?
answer = browser.find_element_by_class_name('star_item')
answer.click()
我不熟悉硒,并在调查网站链接上测试我的代码。
第一页-它成功单击了“下一步”按钮。
第二页-包含第一个按钮,指示1-5比例。 我的代码总是单击找到的第一个按钮。我的目标是在1-5比例之间随机选择一个按钮,然后单击它。我试图编写一个循环,但是没有用。
任何建议将不胜感激。谢谢。
答案 0 :(得分:2)
如果所有元素都具有相同的类名,则可以使用复数elements
来使用返回元素列表的函数,而不仅仅是第一个元素:
answers = browser.find_elements_by_class_name('star_item')
answers[2].click()
答案 1 :(得分:2)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:angle="90"
android:startColor="#0fb8ad"
android:endColor="#2cb5e8"
android:centerColor="#1fc8db"
android:type="radial" />
</shape>
</item>
</selector>
答案 2 :(得分:1)
假设您有5个带有标签<button>
的按钮。然后您可以找到以下按钮:
answers = browser.find_elements_by_xpath('xpath') # gives a list with 5 elements (buttons)
如果您为HTML块提供了全部5个按钮,我可以在它们上找到xPath
。然后,您想随机达到此按钮之一的峰值。您可以这样:
import random
list = [20, 16, 10, 5];
random.shuffle(list)
print ("Reshuffled list : ", list)
random.shuffle(list)
print ("Reshuffled list : ", list)
输出:
Reshuffled list : [16, 5, 10, 20]
reshuffled list : [20, 5, 10, 16]
您的情况是这样的:
import random
answers = browser.find_elements_by_xpath('xpath')
random_list = list(range(len(answers))) # creates a list with ascending numbers 0 ... len(answers)
random.shuffle(random_list)
answers[random_list[0]].click() # click randomly on one of the buttons