选择冲击波闪光灯上的复选框并且在 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&amp;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&amp;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 就可以了。