使用 LinkText 时可以使用字符串变量吗?
Can I use a string variable when using LinkText?
在 Visual Studio 中使用 Selenium。我正在尝试单击列表中的项目。该项目具有唯一 ID。
CA-41107005-00000040
我不想引用实际的 ID 号,而是想通过引用一个将存储项目 ID 的字符串变量来使测试更加动态。我称这个变量为:changeActionNumber
项目的 HTML 代码如下所示:
我试过这样点击项目:
wait.Until(ExpectedConditions.ElementToBeClickable(By.LinkText($"{changeActionNumber}"))).Click();
还有这样的:
wait.Until(ExpectedConditions.ElementToBeClickable(By.LinkText(changeActionNumber))).Click();
但是两种情况都报同样的错误:
Message: OpenQA.Selenium.WebDriverTimeoutException : Timed out after 10 seconds
----> OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"link text","selector":"CA-41107005-00000040"}
(Session info: chrome=77.0.3865.75)
使用LinkText时是不是不能使用变量?
AFAIK,LinkText 选择器查找页面上显示的 link 文本,而不是 html 代码中的文本。因此,如果此文本在显示在页面上之前被额外格式化,例如字母小写或删除特殊符号,则必须考虑这一点。
如果您想使用代码中显示的文本,请尝试使用 xpath
By.XPath(string.Format(".//a[.='{0}']", changeActionNumber))
试试下面的方法xapth
wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpath("//a[text()='" +changeActionNumber + ']"))).Click();
或
wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpath("//a[contains(.,'" +changeActionNumber + ')]"))).Click();
在 LinkText 中使用变量不是问题。
问题是我的驱动程序没有关注正确的 iframe,因此永远找不到匹配的 LinkText 值。
我这样更改了 iframe 焦点:
driver.SwitchTo().DefaultFrame();
driver.SwitchTo().Frame("firstiframe");
driver.SwitchTo().Frame("secondiframe");
driver.SwitchTo().Frame("thirdiframe");
driver.SwitchTo().Frame("ECMMyChangeActions");
然后我可以毫无问题地使用带有变量的 LinkText。
在 Visual Studio 中使用 Selenium。我正在尝试单击列表中的项目。该项目具有唯一 ID。
CA-41107005-00000040
我不想引用实际的 ID 号,而是想通过引用一个将存储项目 ID 的字符串变量来使测试更加动态。我称这个变量为:changeActionNumber
项目的 HTML 代码如下所示:
我试过这样点击项目:
wait.Until(ExpectedConditions.ElementToBeClickable(By.LinkText($"{changeActionNumber}"))).Click();
还有这样的:
wait.Until(ExpectedConditions.ElementToBeClickable(By.LinkText(changeActionNumber))).Click();
但是两种情况都报同样的错误:
Message: OpenQA.Selenium.WebDriverTimeoutException : Timed out after 10 seconds
----> OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"link text","selector":"CA-41107005-00000040"}
(Session info: chrome=77.0.3865.75)
使用LinkText时是不是不能使用变量?
AFAIK,LinkText 选择器查找页面上显示的 link 文本,而不是 html 代码中的文本。因此,如果此文本在显示在页面上之前被额外格式化,例如字母小写或删除特殊符号,则必须考虑这一点。
如果您想使用代码中显示的文本,请尝试使用 xpath
By.XPath(string.Format(".//a[.='{0}']", changeActionNumber))
试试下面的方法xapth
wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpath("//a[text()='" +changeActionNumber + ']"))).Click();
或
wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpath("//a[contains(.,'" +changeActionNumber + ')]"))).Click();
在 LinkText 中使用变量不是问题。
问题是我的驱动程序没有关注正确的 iframe,因此永远找不到匹配的 LinkText 值。
我这样更改了 iframe 焦点:
driver.SwitchTo().DefaultFrame();
driver.SwitchTo().Frame("firstiframe");
driver.SwitchTo().Frame("secondiframe");
driver.SwitchTo().Frame("thirdiframe");
driver.SwitchTo().Frame("ECMMyChangeActions");
然后我可以毫无问题地使用带有变量的 LinkText。