选择冲击波闪光灯上的复选框并且在 html 代码中没有任何 id
Selecting checkbox which is on shockwave flash and does not have any id in html code
我在网站上工作,它是一个流量图,它有冲击波闪光灯,选中它们后有一些复选框,它会执行一些操作,例如选择 'subscribed bandwidth' 在该流量图上显示带宽线。问题是 html 代码中没有元素可以与 it.I 交互,我正在使用带有 python.Below 的 selenium webdriver html 代码
<div id="chartContainer">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="LineChart" height="830" width="100%">
<param name="flashVars" value="use_1024=false&dataMultFactor=1000">
<param name="movie" value="swf/AryakaCharts.swf?version=26128">
<param name="wmode" value="transparent">
<param name="quality" value="high">
<param name="bgcolor" value="#869ca7">
<param name="allowScriptAccess" value="sameDomain">
<embed src="swf/companyCharts.swf?version=26128" quality="high" bgcolor="#869ca7"
name="LineChart" id="LineChart" align="middle" play="true" height="830" width="100%" wmode="transparent" flashvars="use_1024=false&dataMultFactor=1000" loop="false"allowscriptaccess="sameDomain" type="application/x-shockwave-flash">
</object>
</div>
看看 - How best should I interact with Flash from Selenium Java WebDriver
The answer to your question is: No, there is no way you can interact
with Flash from/using Selenium WebDriver. Full stop.
然而,另一位用户似乎想出了一种通过模拟鼠标与 Flash 交互的方法 hold\up。 post 与 Java 相关,但您使用相同的 类 在 Python 中进行交互。
There is a massive misconception that webdriver cannot interact with
flash elements.The answer is YES you can interact with flash elements
embedded inside html
Selenium 无法与 Flash 对象交互。
但是你可以使用FlashSelenium:
URL: http://code.google.com/p/flash-selenium/
其他:
1) Sikuli: http://www.sikuli.org/ 但它是基于 java.
2) Adobe 的 'Genie' 库:
3) Ranorex 的图书馆:
4) AUTOIT
正如 #Martin Swanepoel 关于通过模拟鼠标 hold\up 与闪光灯交互所建议的那样,您可以在JAVA通过使用或导入java.awt.Robot包(可以实时使用activity)
例如
import java.awt.Robot;
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
坦率地说,我不确定这个(java.awt.Robot)。
另一种方法是使用Javascript。
希望这能回答您的问题。
我找到了一个解决方案,这些复选框使用 cookie 来存储状态,因此通过将它们设置为 true 就可以了。
我在网站上工作,它是一个流量图,它有冲击波闪光灯,选中它们后有一些复选框,它会执行一些操作,例如选择 'subscribed bandwidth' 在该流量图上显示带宽线。问题是 html 代码中没有元素可以与 it.I 交互,我正在使用带有 python.Below 的 selenium webdriver html 代码
<div id="chartContainer">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="LineChart" height="830" width="100%">
<param name="flashVars" value="use_1024=false&dataMultFactor=1000">
<param name="movie" value="swf/AryakaCharts.swf?version=26128">
<param name="wmode" value="transparent">
<param name="quality" value="high">
<param name="bgcolor" value="#869ca7">
<param name="allowScriptAccess" value="sameDomain">
<embed src="swf/companyCharts.swf?version=26128" quality="high" bgcolor="#869ca7"
name="LineChart" id="LineChart" align="middle" play="true" height="830" width="100%" wmode="transparent" flashvars="use_1024=false&dataMultFactor=1000" loop="false"allowscriptaccess="sameDomain" type="application/x-shockwave-flash">
</object>
</div>
看看 - How best should I interact with Flash from Selenium Java WebDriver
The answer to your question is: No, there is no way you can interact with Flash from/using Selenium WebDriver. Full stop.
然而,另一位用户似乎想出了一种通过模拟鼠标与 Flash 交互的方法 hold\up。 post 与 Java 相关,但您使用相同的 类 在 Python 中进行交互。
There is a massive misconception that webdriver cannot interact with flash elements.The answer is YES you can interact with flash elements embedded inside html
Selenium 无法与 Flash 对象交互。
但是你可以使用FlashSelenium:
URL: http://code.google.com/p/flash-selenium/
其他:
1) Sikuli: http://www.sikuli.org/ 但它是基于 java.
2) Adobe 的 'Genie' 库:
3) Ranorex 的图书馆:
4) AUTOIT
正如 #Martin Swanepoel 关于通过模拟鼠标 hold\up 与闪光灯交互所建议的那样,您可以在JAVA通过使用或导入java.awt.Robot包(可以实时使用activity) 例如
import java.awt.Robot;
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
坦率地说,我不确定这个(java.awt.Robot)。
另一种方法是使用Javascript。
希望这能回答您的问题。
我找到了一个解决方案,这些复选框使用 cookie 来存储状态,因此通过将它们设置为 true 就可以了。