Selenium Python-无法通过Xpath进行选择



我在表中单击icon/link时遇到问题。find_element_by_xpathfind_elements_by_Xpath我都试过了,但都没用。由于找不到元素,我遇到了一些问题,所以我不得不等待。

我已经突出显示了"表"行中的图标,并带有红色框。在这张图片中。网站

还找到了Xpath,但似乎无法正常工作,该图标可以在网页上点击。Xpath

我的代码如下:

driver.implicitly_wait(7)
tr = driver.find_element_by_xpath('//*[@id="AthleteTheme_wt6_block_wtMainContent_wt9_wtClassTable_ctl05_AthleteTheme_wt221_block_wtIconSvg_Svg"]/svg/use')
tr.click()

感谢

Element位于svg标记中。同样的东西也有不同的语法。参考链接-链接1、链接2

要访问svg标记元素,语法如下:

//*[local-name()='svg']

根据屏幕截图,元素的xpath为:

//span[@id="AthleteTheme_wt6_block_wtMainContent_wt9_wtClassTable_ctl05_AthleteTheme_wt221_block_wtIconSvg_Svg"]/*[local-name()='svg']/*[local-name()='use']

您不能直接使用//来定位SVG元素。它们是一种特殊的标签。

始终使用//*[name()='svg']//*[local-name()='svg']来定位它们。

根据您共享的HTML,请使用以下xpath:

//a[@class='svgContainer']//child::span//*[name()='svg' and starts-with(@id,'AthleteTheme')]//*[name()='use']

**如果我们在HTML DOM中是否有唯一条目,请检查dev tools(Google chrome)。

检查步骤:

Press F12 in Chrome->转到element部分->进行CTRL + F->然后粘贴xpath,看看您想要的element是否通过1/1匹配节点突出显示。

代码试用1:

time.sleep(5)
driver.find_element_by_xpath("//a[@class='svgContainer']//child::span//*[name()='svg' and starts-with(@id,'AthleteTheme')]//*[name()='use']").click()

代码试用2:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='svgContainer']//child::span//*[name()='svg' and starts-with(@id,'AthleteTheme')]//*[name()='use']"))).click()

代码试用3:

time.sleep(5)
button = driver.find_element_by_xpath("//a[@class='svgContainer']//child::span//*[name()='svg' and starts-with(@id,'AthleteTheme')]//*[name()='use']")
driver.execute_script("arguments[0].click();", button)

代码试用4:

time.sleep(5)
button = driver.find_element_by_xpath("//a[@class='svgContainer']//child::span//*[name()='svg' and starts-with(@id,'AthleteTheme')]//*[name()='use']")
ActionChains(driver).move_to_element(button).click().perform()

进口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains

相关内容

  • 没有找到相关文章