可以使用哪种方法获取网站上的硬编码文本?
Which method can be used to get the hardcoded text on the website?
我要打印地址如下:
200 E 校园景观大道
俄亥俄州哥伦布市 200 号套房 - 43235
+1-740-972-6457
我可以使用什么方法?
我正在使用 gettext()
作为屏幕截图中显示的 xpath。
它抛出一个错误
'Unable to locate element'
解决方法:-
driver.get("http://qaagility.com/");
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.findElement(By.xpath(".//*[@id='main_header']/nav/ul/li[5]/a")).click();
WebElement elements = driver.findElement(By.xpath("//div[@class='contact_container'][1]/div[@class='contact_us'][2]/div[@class='address']"));
JavascriptExecutor js = (JavascriptExecutor) driver;
int yScrollPosition = elements.getLocation().getY();
js.executeScript("window.scroll(0, " + yScrollPosition + ");");
String address = elements.getText();
System.out.println(address);
使用下面的 XPath:-
//div[@class='contact_container']//div[@class='address']
使用下面的代码:-
String address = driver.findElement(By.xpath("//div[@class='contact_container']//div[@class='address']")).getText();
System.out.println(address);
如果仍然无法正常工作,那么您的 DOM
上应该有一个框架
您需要先切换到相框。
在下面参考我的回答:-
更改语法,因为答案在 C# 中,您可能需要 java 代码
希望对您有所帮助:)
使用此 css 选择器获取文本:".center.slide_wrapper > div:nth-child(4) > div:nth-child(2)"
irb#1(main):039:0* find(".center.slide_wrapper > div:nth-child(4) > div:nth-child(2)").text
=> "USA 200 E Campus View Blvd. Suite 200, Columbus, OH - 43235 +1-740-972-6457 usa@qaagility.com"
如果您使用 Python 或 Ruby 使用 .text
如果 Java 使用 .getText()
并且 C# 使用 .Text()
.
这是获取美国地址的有效 C# 代码。
[Test]
public void TestMethod1()
{
IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver(@"ChromeDriver\Path");
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
driver.Navigate().GoToUrl(@"http://www.qaagility.com/");
driver.Manage().Window.Maximize();
//Wait for Contact US link in header.
IWebElement contactUS = wait.Until<IWebElement>((d) => { return driver.FindElement(By.LinkText("Contact Us")); });
contactUS.Click();
//Wait for Address
IWebElement USAddress = wait.Until<IWebElement>((d) => { return driver.FindElement(By.CssSelector("div[class='center slide_wrapper']>div:nth-of-type(4)>div:nth-of-type(2)>div:nth-of-type(2)")); });
Console.WriteLine(USAddress.Text);
}
请注意,美国地址不在 iFrame 下。 iFrame 适用于 Google 地图。
在 Java 中尝试上面的代码。
这是上面代码的输出。
希望这有帮助:)
我要打印地址如下:
200 E 校园景观大道
俄亥俄州哥伦布市 200 号套房 - 43235
+1-740-972-6457
我可以使用什么方法?
我正在使用 gettext()
作为屏幕截图中显示的 xpath。
它抛出一个错误
'Unable to locate element'
解决方法:-
driver.get("http://qaagility.com/");
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.findElement(By.xpath(".//*[@id='main_header']/nav/ul/li[5]/a")).click();
WebElement elements = driver.findElement(By.xpath("//div[@class='contact_container'][1]/div[@class='contact_us'][2]/div[@class='address']"));
JavascriptExecutor js = (JavascriptExecutor) driver;
int yScrollPosition = elements.getLocation().getY();
js.executeScript("window.scroll(0, " + yScrollPosition + ");");
String address = elements.getText();
System.out.println(address);
使用下面的 XPath:-
//div[@class='contact_container']//div[@class='address']
使用下面的代码:-
String address = driver.findElement(By.xpath("//div[@class='contact_container']//div[@class='address']")).getText();
System.out.println(address);
如果仍然无法正常工作,那么您的 DOM
上应该有一个框架您需要先切换到相框。
在下面参考我的回答:-
更改语法,因为答案在 C# 中,您可能需要 java 代码
希望对您有所帮助:)
使用此 css 选择器获取文本:".center.slide_wrapper > div:nth-child(4) > div:nth-child(2)"
irb#1(main):039:0* find(".center.slide_wrapper > div:nth-child(4) > div:nth-child(2)").text
=> "USA 200 E Campus View Blvd. Suite 200, Columbus, OH - 43235 +1-740-972-6457 usa@qaagility.com"
如果您使用 Python 或 Ruby 使用 .text
如果 Java 使用 .getText()
并且 C# 使用 .Text()
.
这是获取美国地址的有效 C# 代码。
[Test]
public void TestMethod1()
{
IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver(@"ChromeDriver\Path");
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
driver.Navigate().GoToUrl(@"http://www.qaagility.com/");
driver.Manage().Window.Maximize();
//Wait for Contact US link in header.
IWebElement contactUS = wait.Until<IWebElement>((d) => { return driver.FindElement(By.LinkText("Contact Us")); });
contactUS.Click();
//Wait for Address
IWebElement USAddress = wait.Until<IWebElement>((d) => { return driver.FindElement(By.CssSelector("div[class='center slide_wrapper']>div:nth-of-type(4)>div:nth-of-type(2)>div:nth-of-type(2)")); });
Console.WriteLine(USAddress.Text);
}
请注意,美国地址不在 iFrame 下。 iFrame 适用于 Google 地图。 在 Java 中尝试上面的代码。
这是上面代码的输出。