Many web pages uses <object> tags for embedded object within an HTML document. This element is mainly used to embed SVG elements, multimedia, Java applets, Flash etc.
Many web pages also use the <object> tag to embed another webpage or frames into the HTML document.
Though <object> tags looks slimilar to <iframe>, it won't work if you do switch frame by webdriver (e.g. driver.switchTo().frame(objIDorIndex);)
Here are few scenarios that you can handle using selenium webdriver with javascript/jQuery.
Example - 1:
Many web pages also use the <object> tag to embed another webpage or frames into the HTML document.
Though <object> tags looks slimilar to <iframe>, it won't work if you do switch frame by webdriver (e.g. driver.switchTo().frame(objIDorIndex);)
Here are few scenarios that you can handle using selenium webdriver with javascript/jQuery.
Example - 1:
Example - 2:
(Case 1) In example-1, if you want to click on a "g" elements of SVG element
WebElement objectTag= findElement(By.xpath("//div[@id='imageholder']//object")); ((JavascriptExecutor) driver).executeScript("return (arguments[0].contentDocument.getElementsByTagName('g')[0]).click()", objectTag);(Case 2) In example-2, if you want to get the title for assertion, then try as an example given below
List<WebElement> objects = findElements(By.xpath("//div[@class='contentViewer']//object")); String objectId = objects.get(0).getAttribute("id"); WebDriver driver = getDriver(); JavascriptExecutor js = (JavascriptExecutor) driver; String text = (String) js.executeScript("return (((document.getElementById('" + objectId + "')).contentDocument).getElementsByClassName('titleText')[0]).innerHTML"); getDriver().switchTo().defaultContent();(Case 3) In example-2, if you want to get any specific attribute, then try something like below
List<WebElement> objects = findElements(By.xpath("//div[@class='contentViewer']//object")); String objectId = objects.get(0).getAttribute("id"); WebElement objectTag = findElement(By.id(objectId)); String btnTitle = ((JavascriptExecutor) driver).executeScript("return arguments[0].contentDocument.getElementById('closeText').getAttribute('title')", objectTag).toString(); Assert.assertEquals(btnTitle, "Cancel to close");(Case 4) In example-2, if you want to do any action inside the iFrame, you can use as below given example
WebElement btnDone = (WebElement) js.executeScript("return ((((document.getElementById('" + objectId + "')).contentDocument).getElementsByTagName('iFrame')[0]).getElementById('done'))"); btnDone.click();Note: I have just gave few examples actions w.r.t my example html code snippet. By referring the above examples you do actions inside <object> tag as per your requirements