@FindBy(how = How.XPATH, using = "//*[text()='A1. Approved']")
private WebElement Approved;
driver.execute_script("arguments[0].click();",Approved)
这句话的意思是使用 JavaScript 在浏览器中执行一个点击操作,将页面元素 "supportUser" 点击。
具体来说,"driver.execute_script" 是调用浏览器驱动程序 (driver) 的一个方法,它可以用来在浏览器中执行 JavaScript 代码。"arguments[0].click()" 是一段 JavaScript 代码,它表示调用第一个参数 (即 "supportUser") 的 "click" 方法,这样就可以在浏览器中对这个元素执行点击操作了。
总的来说,这句话的作用就是通过浏览器驱动程序自动化地执行浏览器中的点击操作。
如果代码报错:selenium.common.exceptions.InvalidArgumentException: Message: invalid argument
这可能是由于元素的交互方式或页面的特殊设计导致的。为了解决这个问题,
我们可以尝试以下三种方案:模拟鼠标操作、模拟键盘操作和通过JavaScript操作。
1. 模拟鼠标操作
当无法通过click方法点击元素时,我们可以通过Selenium的ActionChains类来模拟鼠标操作,
操作步骤:
# 1.导入ActionChinas类
from selenium.webdriver import ActionChains
# 2.实例化ActionChinas对象
actions = ActionChains(driver)
# 3.执行鼠标操作,如点击元素
actions.click(ele).perform()
import time
from selenium import webdriver
from pywinauto.keyboard import send_keys
# 1.导入ActionChinas类
from selenium.webdriver import ActionChains
dr = webdriver.Chrome()
dr.get("https://www.baidu.com")
dr.implicitly_wait(5)
dr.find_element_by_xpath('//span[@class="soutu-btn"]').click()
ele = dr.find_element_by_xpath('//div[@class="upload-wrap"]/input[@type="file"]')
# 2.实例化ActionChinas对象
actions = ActionChains(dr)
# 3.执行鼠标操作,如点击元素
actions.click(ele).perform()
time.sleep(3)
send_keys(keys=r'D:\api_test.jpg')
send_keys(keys='{ENTER}')
time.sleep(30)
except Exception as e:
raise e
finally:
dr.quit()
2. 模拟键盘操作
如果元素无法通过鼠标点击,我们可以尝试使用键盘操作来触发相应的事件。具体步骤如下:
from selenium.webdriver.common.keys import Keys
在元素发送特定的键盘按键
element.send_keys(Keys.ENTER)# 模拟回车键
3. 通过js操作
如果无法通过鼠标和键盘操作来点击元素,我们可以尝试使用JavaScript来直接操作页面元素。具体步骤如下:
使用execute_script方法来执行js代码
driver.execute_script("arguments[0].click();", element)
百度搜图代码优化
import time
from selenium import webdriver
from pywinauto.keyboard import send_keys
# 1.导入ActionChinas类
from selenium.webdriver import ActionChains
dr = webdriver.Chrome()
dr.get("https://www.baidu.com")
dr.implicitly_wait(5)
dr.find_element_by_xpath('//span[@class="soutu-btn"]').click()
ele = dr.find_element_by_xpath('//div[@class="upload-wrap"]/input[@type="file"]')
# #使用execte_script来来点击。因为无法通过click()点击
dr.execute_script("arguments[0].click();",ele)
actions.click(ele).perform()
time.sleep(3)
send_keys(keys=r'D:\api_test.jpg')
send_keys(keys='{ENTER}')
time.sleep(30)
except Exception as e:
raise e
finally:
dr.quit()
(仅作为个人笔记,如有雷同,请联系删除。。)
1、
Selenium
的特点:
开源、免费,多浏览器支持,多平台支持,多语言支持,对Web页面有良好的支持,API简单,灵活(用开发语言驱动),支持分布式测试用例执行。
2、Windows下的测试环境搭建:
安装Python;
安装setuptools与pip(注:Python3不支持setuptools,但已经集成了pip)
安装
Selenium
:pip install
Selenium
指定版本号安装:pip install seleni
Selenium
中提供了很多定位
元素
、操作
元素
的方法,但是由于网页的开发形态各种各样,所以难免有些需求满足不了。当
Selenium
无法
操作的情况下,就需要通过 Java
Script
来辅助了。
在 Web
Driver
中提供了执行 Java
Script
的方法:
execute
_
script
(
script
, *args),Java
Script
代码
以字符串的形式构建,然后传给该方法执行。
参
.
.
.
要
使用
`
driver
.
execute
_
script
()` 方法模拟
点击
一个
元素
并上传附件,你可以执行以下步骤:
1
.
首先,
使用
`
driver
.
find_element()` 方法定位到要
点击
的
元素
。
2
.
然后,
使用
`
driver
.
execute
_
script
()` 方法执行 Java
Script
代码
来模拟
点击
事件。可以
使用
`element
.
click()` 方法来触发
点击
事件。
3
.
接下来,你可以
使用
`
driver
.
find_element()` 方法找到上传文件输入框的
元素
。
4
.
最后,
使用
`element
.
send_keys()` 方法将文件路径作为参数传递给输入框,以实现上传文件的操作。
下面是一个示例
代码
,演示了如何
使用
`
driver
.
execute
_
script
()` 方法
点击
元素
并上传附件:
```python
from
selenium
import web
driver
# 创建一个 Chrome 浏览器实例
driver
= web
driver
.
Chrome()
# 打开网页
driver
.
get("https://www
.
example
.
com")
# 定义 Java
Script
代码
,
点击
上传按钮
click_
script
= """
var element = document
.
getElementById('uploadButton');
element
.
click();
# 执行 Java
Script
代码
,
点击
上传按钮
driver
.
execute
_
script
(click_
script
)
# 找到文件上传输入框
file_input =
driver
.
find_element("xpath", "//input[@type='file']")
# 上传文件
file_input
.
send_keys("/path/to/file
.
txt")
# 关闭浏览器实例
driver
.
quit()
在上述示例
代码
中,我们首先创建了一个 Chrome 浏览器实例,并打开了一个网页。
然后,我们
使用
`
driver
.
execute
_
script
()` 方法执行 Java
Script
代码
来模拟
点击
上传按钮。该
代码
找到 ID 为 `uploadButton` 的
元素
,并调用 `click()` 方法模拟
点击
事件。
接下来,我们
使用
`
driver
.
find_element()` 方法找到文件上传输入框的
元素
。这里
使用
了 XPath 定位方式,你可以根据实际情况选择适合的定位方式。
最后,我们
使用
`send_keys()` 方法将文件路径传递给文件上传输入框,实现文件上传操作。
请确保你已经正确安装了
Selenium
库,并根据实际情况修改
代码
中的网页 URL、
元素
定位方式和文件路径。
如果你有任何其他问题,请随时提问。