如何在iframe中使用XPATH?

时间:2016-06-01 12:31:15

标签: selenium iframe xpath

我试图将XPATH放在名为“gadget_6”的{if called "gadget_6"

的iframe中

我需要select div的xpath。使用硒我做:

self.change_frame('__gadget_6') #Change to the correct iframe

之后,我尝试做:

self.selec_orgvdc = self.driver.find_element(By.XPATH,'/html/body/div[5]/div/div/div/table/tbody/tr/td/div')

后面做:

self.selec_orgvdc.click

但是我得到了错误:

InvalidSelectorException: Message: invalid selector: Unable to locate an element with the xpath expression /html/body/div[5]/div/div/div/table/tbody/tr/td/div because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '/html/body/div[5]/div/div/div/table/tbody/tr/td/div' is not a valid XPath expression.

有人可以帮助我吗?

新修改:

self.change_frame('__gadget_6')
time.sleep(4)
self.logger.info("Buscando orgvdc")
#self.selec_orgvdc = self.driver.find_element(By.CSS_SELECTOR,'div.GN4Y2ATIMD table div.gwt-Label')
self.selec_orgvdc = self.driver.find_element(By.XPATH,'//div[5]/div/div/div/table/tbody/tr/td/div')
self.logger.info("Encontrado!")

2 个答案:

答案 0 :(得分:2)

您好在iframe中使用xpath首先必须删除您的驱动程序实例ti iframe然后只能执行任何操作

1.To switch to an iframe plz do it like : driver.switchTo().frame("selfservice");

同时查看您的源代码我可以清楚地看到有2(2)个i帧

1.iframe id = __gadget_6 2.iframe id = selfservice

因此我可以猜到为什么它在你的情况下无效,因为你正在切换到错误的i帧

现在尝试使用 xpath //*[@class='GN4Y2ATIMD']/div/div/div/table/tbody/tr/td/div执行点击,这肯定会有效。

答案 1 :(得分:0)

XPath不应该包含/ html / body。试试这个:

self.selec_orgvdc = self.driver.find_element(By.XPATH,'//div[5]/div/div/div/table/tbody/tr/td/div')

请注意,这将非常脆弱。更好的方法是做这样的CSS:

self.selec_orgvdc = self.driver.find_element(By.CSS,'div.GN4Y2ATIMD table div.gwt-Label')