我正在努力验证html object标签中的html元素。
下面是我的测试html (test1.html
)。
<html>
<body>
<h1>this is test 1</h1>
<object id='obj1' width="100%" height="200px" data="http://www.w3schools.com/"></object>
<br> <br> <br> <br>
<iframe id='ifr1' width="100%" height="200px" src="http://www.w3schools.com/"></iframe>
</body>
</html>
在iframe
的情况下,使用webdriver switchto frame方法很容易处理,如下例所示。
@Test
public void testIframe() {
try {
FirefoxDriver driver = new FirefoxDriver();
driver.get("http://localhost/test1.html");
driver.switchTo().frame(0);
Assert.assertTrue(driver.findElement(By.xpath("/html/body/div[1]/div")).getText().equals("THE WORLD'S LARGEST WEB DEVELOPER SITE"));
driver.quit();
} catch (Exception e) {
e.printStackTrace();
}
}
但是对于object标签,switchTo
方法不能以同样的方式应用。我很好奇Selenium提供了这种处理方式。
有没有人有解决这个问题的想法,或者有什么建议?
发布于 2018-07-03 08:16:15
我也使用了类似于@Deepak_Mahalingam的东西。以防有人发现他的语法不起作用。我使用chrome并检查代码以获得xpath。
link = driver.find_element_by_xpath('//*[@id="gl-consoleTabs-slides"]/div/div/object').get_attribute('data')
发布于 2016-02-05 21:15:32
我也遇到了同样的问题,下面的解决方案适用于我的项目:
1.我编写了一个java方法,从源代码的<Object>
标记的data
属性中获取URL。
2.在新选项卡中打开提取的URL并执行所需的测试。
3.切换回main选项卡。
这里我使用的方法,你可以根据你的需求进行修改:
public void getObjectTagURL(){
try {
String pageSource= driver.getPageSource();
int startIndex =str.indexOf("http://www.myURL");
int endIndex= str.indexOf("</object>");
String url= str.substring(startIndex, endIndex);
} catch (Exception e) {
System.out.println(e);
}
希望能有所帮助。
发布于 2020-05-27 19:47:01
您也可以使用SwitchTo接口访问object元素,方法如下:
driver.SwitchTo().Frame(driver.FindElement(By.TagName("object")));
https://stackoverflow.com/questions/33000001
复制相似问题