点击选择图片自动化实现

需求:为商品上传图片并提交保存。

上传图片里面遇到了两个坑,

一个是定位元素时遇到随机id,xpath和css_selector无法定位的问题,

另一个是真正的上传控件定位的问题。

1、定位点击选择图片按钮

当我们定位“点击选择图片”按钮时,我们看到这是一个label标签,

这个label标签,它的父元素有一个id属性。id="rt_rt_1huuu0k271g6gq0t1139fl1kg78"

这种id后面有一大长串的,是随机生成的,是一个动态的id,这个时候我们怎么样去定位这个标签呢。

这个时候,我们复制它父标签的xpath路径,可以看出xpath也是跟id有关,也是不能用的。

//*[@id="rt_rt_1huuu0k271g6gq0t1139fl1kg78"]

接下来去找它父标签的css_selector路径,也是跟id有关的,也是不能用的

#rt_rt_1huuu0k271g6gq0t1139fl1kg78

这个时候我们怎么定位这个标签呢?

我们接着往上看,这时我们发现,在祖先元素#filePicker下面只有它这一个label标签。

这个时候我们用css_selector可以找到这个祖元素,再定位到孙元素的方法定位。

driver.find_element_by_css_selector("#filePicker label").click()

css_selector右键copy的方法,

右键检查元素,选择copy,再选择copy selector。

手动自己书写的方法

1、标签名可以直接在css_selector中使用。

2、在css中,需要在class属性前面加一个小数点

3、在css中,需要在id属性前面加一个 #号

4、大于号>表示父子关系

5、空格表示祖先元素和子孙元素的关系

这时,我们看代码“#filePicker label”,表示找到祖元素filePicker下面的子孙元素label,此时点击即可,弹窗选择图片页面。

但是这个弹窗是window的弹窗,网页无法操作,所以这样不行,接着我们想另外的一种办法上传图片。

2、用控件上传图片

真正负责上传文件的控件是<input type="file"...>,找到这个控件,然后对他进行send_keys即可。

本来“点击选择图片”是不可以点击的,但是开发写了一个javascript代码,点击这个label,相当于点击上传文件的控件。

input type=“file”   类型是文件,这个表示文件上传的控件

input type="text"   表示文本输入框

input type=“password”   表示密码输入框

input type=“button”     表示是按钮

input type=“submit”     表示提交按钮

本来Label标签不可点击。但是我们点击选择图片时,实际是点击的这个input类型文件上传的控件

因为这个控件的属性是不可见的,class=”webuploader-element-invisible”   这时我们把class里面的内容删掉,就可以看到这个控件了。在按钮的上方多了一个控件,叫“选择文件”。

这时直接点击“选择文件”,也能直接打开选择文件的窗口,

因为这个控件的样式和我们整个页面的风格不太一致。我们自己创建一个按钮,可以调整使它的风格符合页面的风格。所以开发喜欢用label代替真正上传的这个控件,并把它置为不可见。

找到这个真正控制上传的控件,我们就可以定位这个元素,并且上传图片了。

上传时,照片网址的反斜线要改成两个反斜线。

driver.find_element_by_name("file").send_keys("D:\\niupeng1.png")

#   点击添加商品图册
driver.find_element_by_link_text("商品图册").click()
driver.find_element_by_name("file").send_keys("D:\\niupeng1.png")
# 点击开始上传按钮
driver.find_element_by_css_selector(".uploadBtn.state-finish.state-ready").click()
# 处理弹出框
WebDriverWait(driver,30,0.5).until(expected_conditions.alert_is_present())
driver.switch_to.alert.accept()
#  点击提交按钮
driver.find_element_by_class_name("button_search").click()

此时上传完,并点击提交,图片上传成功了。

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 Python 实现自动化可以使用 Python 脚本来模拟人类的一些操作,从而实现自动化。 例如,你可以使用 Python 脚本来登录你的电子邮件帐户,然后使用特定的条件来搜索电子邮件,并根据需要自动回复或转发电子邮件。 要实现这一点,你需要了解一些 Python 的基础知识,以及如何使用 Python 的电子邮件库来操作电子邮件。你也可以使用 Python 的第三方库,如 selenium 来模拟人类在浏览器中的操作,从而实现自动化测试或者网络爬虫等。 这里是一个使用 Python 实现自动化的简单示例: ``` import os # 自动打开文件 os.system("open /path/to/file") # 自动发送电子邮件 import smtplib server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login("your_email@example.com", "your_password") msg = "Hello, this is a test email sent from a Python script." server.sendmail("your_email@example.com", "recipient@example.com", msg) server.quit() # 自动搜索网站 import requests response = requests.get("https://www.example.com/search?q=keyword") print(response.text) # 自动填写表单 import mechanize br = mechanize.Browser() br.open("https://www.example.com/login") br.select_form(nr=0) br["username"] = "your_username" br["password"] = "your_password" response = br.submit() print(response.read()) ``` 希望这能帮到你! ### 回答2: 使用Python实现自动化是通过编写脚本和程序来自动执行重复的任务和流程。Python编程语言具有简单易学、功能强大和丰富的库和模块等特点,因此非常适合用于自动化。 首先,Python可以用于自动化测试。我们可以使用Selenium库来模拟用户在网页上的操作,如点击按钮、输入文本等,从而进行网站功能的自动化测试。此外,Python还可以用于接口自动化测试,通过发送HTTP请求并验证返回结果来实现接口功能的自动化测试。 其次,Python可以用于文件操作的自动化。我们可以使用os和shutil等库来自动处理文件和文件夹,如批量重命名文件、复制和移动文件等。此外,通过使用Python的xlrd和xlwt库,我们还可以实现Excel文件的读取和写入操作,从而实现Excel的自动化处理。 另外,Python可以用于网络爬虫的自动化。通过使用BeautifulSoup、Scrapy和Requests等库,我们可以编写爬虫程序来自动从网页上获取数据,并进行存储和处理。这在获取大量数据或进行数据分析时非常有用。 此外,Python还可以用于自动化的GUI应用程序开发。通过使用PyQt、Tkinter等库,我们可以编写窗口应用程序,实现图形界面的自动化操作。例如,编写一个批量处理图片的程序,实现自动调整尺寸、添加水印等功能。 总而言之,Python的简洁性、灵活性和丰富的库和模块使其成为实现自动化的理想选择。无论是测试自动化、文件处理、网络爬虫还是GUI应用程序开发,Python都能提供强大的支持,帮助我们提高工作效率和降低人为错误。 ### 回答3: 使用Python实现自动化可以帮助简化重复性的任务,提高工作效率。Python拥有丰富的库和模块,可以帮助我们完成各种自动化任务。 首先,Python可以用于文件和文件夹的自动化处理。我们可以使用Python的os模块来批量重命名或移动文件,创建或删除文件夹。这样就能够迅速完成大量文件操作的任务,节省时间和精力。 其次,Python还可以用于Web自动化。我们可以利用Pythonselenium库来实现自动化浏览器操作。例如,自动化登录网站,填充表单,爬取网页内容等。这对于需要定期进行网页操作的任务非常有用,可以减轻人工操作带来的繁琐。 此外,Python还可以用于自动化测试。我们可以使用Python的测试框架(如unittest和pytest)来编写自动化测试脚本,以验证代码是否按预期进行。这样可以提高代码质量和稳定性,减少人工测试的工作量。 最后,Python还可以用于项目部署和运维自动化。我们可以使用Python来编写脚本,自动化部署代码、安装依赖包、配置服务器等任务。这将大大简化部署过程,减少错误和时间消耗。 总之,Python的简洁语法和强大的库支持使其成为自动化任务的理想选择。通过使用Python实现自动化,我们能够提高工作效率,减少繁琐的重复操作,从而将更多时间和精力投入到更有意义的工作上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值