我需要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!")
答案 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')