我试图为参与在线支持系统的一对网站编写测试:一个用于Agent
,第二个用于Visitor
。
最初,Visitor
打开其网站上的支持标签,Agent
接听电话并接听电话。双方此刻只进行文字聊天。
之后,Agent
想要将聊天呼叫升级到音频 - 视频级别并按下特殊按钮。
将打开一个附加窗口小部件,其中包含带有IFRAME
按钮的INVITE
元素。
代理按下INVITE
按钮。
之后,代理必须按文本聊天中的“发送”按钮(位于主页内容,而不是IFRAME
),以发送代理加入音频的邀请 - 视频聊天。
这些是我想要自动化的步骤。
一切正常,直到.switch_to_default_content()
。之后,浏览器似乎丢失了DOM,并且在主页面和IFRAME中都没有找到任何元素。
本地WebDriver
和WebDriver.Remote
网格的行为相同,Chrome
最新版本和Firefox
最新版本,Windows 10
及{{1}无论Mac OS X 10.11.6
组合如何。
以下是Capabilities
中的代码:
Pytnon
此后,#Starting the Agent browser
options = webdriver.ChromeOptions()
options.add_argument("--disable-notifications")
agent_browser = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=options.to_capabilities())
<...>
#Starting the Visitor browser
visitor_browser = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.CHROME)
<...>
# Finding the IFRAME
agent_LPVE_iframe = WebDriverWait(agent_browser, 30).until(EC.presence_of_element_located((By.XPATH, "//iframe[contains(@class, 'lpview_table_items_placeholder')]")))
# Switching to IFRAME
agent_browser.switch_to_frame(agent_LPVE_iframe)
<...>
# Switching to default contents
#agent_browser.switch_to_default_content()
agent_browser.switch_to.default_content()
无法在主页面DOM和WebDriver
内找到任何元素,即使它已切换回IFRAME
。
为什么会发生这种情况?如何使其正常工作?
我正在使用:
- IFRAME
- Python 3.6.0 x32
- selenium-server-standalone-3.3.1.jar
- ChromeDriver 2.28 Win32
告诉我您是否需要任何其他信息。