学习selenium第一天,下面是网址我自己只能写自己编的一个email和密码地址还有性别等等什么都是自己固定的,无法随机,不知道email还有性别出生日期在自动化的时候怎么做到随机选择一个,还有就是有没有人看看我地址那里19,20行到底对不对呀,为啥偶尔一次两次成功了,其余的时候都显示有问题
首先,让我们来解决随机输入的问题。要随机生成输入,您可以使用Python的内置random模块来生成随机的email地址和性别。下面是示例代码:
python
import random
import string
# 生成随机的email地址
def generate_email():
# 生成随机的字符串
random_str = ''.join(random.choices(string.ascii_lowercase, k=5))
# 生成随机的邮箱地址
email = 'user' + random_str + '@example.com'
return email
# 生成随机的性别
def generate_gender():
if random.random() < 0.5:
gender = 'M'
else:
gender = 'F'
return gender
接下来,让我们来解决表单提交的问题。从您的代码中可以看出,您已经使用了Selenium的send_keys()方法将输入值硬编码到表单中。但是,更好的做法是使用Python的find_element()方法来定位表单元素,并使用send_keys()方法将随机生成的输入值发送到表单中。然后,使用submit()方法提交表单。下面是示例代码:
python
from selenium import webdriver
import random
import string
# 生成随机的email地址和性别
def generate_email():
# 生成随机的字符串
random_str = ''.join(random.choices(string.ascii_lowercase, k=5))
# 生成随机的邮箱地址
email = 'user' + random_str + '@example.com'
return email
def generate_gender():
if random.random() < 0.5:
gender = 'M'
else:
gender = 'F'
return gender
# 打开网站并随机填写表单
driver = webdriver.Chrome()
driver.get('https://www.example.com')
email = generate_email()
gender = generate_gender()
# 定位表单元素并填写表单
input_email = driver.find_element_by_name('email')
input_email.send_keys(email)
input_gender = driver.find_element_by_name('gender')
input_gender.send_keys(gender)
# 提交表单
input_submit = driver.find_element_by_name('submit')
input_submit.click()
我一般比较喜欢selenium结合javascript。你可以开浏览器的开发者工具研究一下网页的结构,通过selenium调用javascript直接设定表单、输入框的值。随机的话,javascript用Math.random()可生成一个[0,1)的随机数,然后作一个函数映射到性别、日期等。
Selenium调用javascript用driver.execute_javascript('console.log("Hello");')
这样。