当前位置: 代码迷 >> java >> ID下划线的定位元素
  详细解决方案

ID下划线的定位元素

热度:85   发布时间:2023-08-02 10:38:55.0

第一件事,是硒的新手,正在尝试自动化。 我有一个'XPATH'动态变化的问题。 xpath的第一部分和最后一部分是恒定的,但是问题是,第一部分和最后一部分都带有“下划线”,而我的表达式无法识别它。

我的Xpath:

ctl00_m_g_1140dfe4_4238_447b_b837_a62e12617b03_ctl00_rptLeftNav_ctl00_rptLeftNavSubCat_ctl00_lnkNavSubCat

我尝试使用下面的webdriver代码:

dr.findElement(By.xpath("//input[@id[contains(., '_ctl00_rptLeftNavSubCat_ctl00_lnkNavSubCat')]]")).click;

但是,我收到如下错误消息。

org.openqa.selenium.NoSuchElementException:没有这样的元素

我在某处读到“下划线”不能在正则表达式中使用,这是真的吗? 有人可以在这里提供解决方案吗? 将不胜感激。

id属性中的这些数字看起来像是动态生成的。 而是找到检查rptLeftNavrptLeftNavSubCatlnkNavSubCat

//input[contains(@id, 'rptLeftNav') and contains(@id, 'rptLeftNavSubCat') and contains(@id, 'lnkNavSubCat')]

您还将混淆XPath和正则表达式。 在这里,我们仅讨论Selenium WebDriver,并编写一个XPath表达式来定位元素。

您可能还需要等待元素出现

WebDriverWait wait = new WebDriverWait(webDriver, 10);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[contains(@id, 'rptLeftNav') and contains(@id, 'rptLeftNavSubCat') and contains(@id, 'lnkNavSubCat')]")));

我的朋友在在线搜索时已经找到了解决方案。 可以使用“ cssselector”解决。

dr.findElement(By.cssSelector("a[id^='ctl00'][id$='_ctl00_rptLeftNav_ctl00_lnkNavigation']")).click();

现在很放心:)!

  相关解决方案