我想打印如下地址:
200 E校园大道。
Suite 200,Columbus,OH - 43235
+ 1-740-972-6457
我可以用什么方法?
我使用gettext()
作为屏幕截图中显示的xpath
它会抛出错误
'无法找到元素'
。
请参阅附件enter image description here
答案 0 :(得分:1)
解决方案: -
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上应该有一个框架
您需要先切换到相框。
请参阅下面的答案: -
Selenium in C# - How do I navigate different frames
更改语法,因为答案在C#中,可能你需要一个java代码
希望它会对你有所帮助:)。
答案 1 :(得分:0)
使用此css选择器获取文本:
import Tkinter as tk
root = tk.Tk()
checked = tk.BooleanVar()
i_checked = tk.IntVar()
s_checked = tk.StringVar()
s_checked.set("off")
def cb_checked(event=None):
global checked
print("Test Checkbutton Value: {}".format(checked.get()))
def cb_i_checked(event=None):
global i_checked
print("Integer Checkbutton Value: {}".format(i_checked.get()))
def cb_s_checked(event=None):
global s_checked
print("String Checkbutton Value: {}".format(s_checked.get()))
chkbtn_test = tk.Checkbutton(root, text="Test", variable=checked, command=cb_checked)
chkbtn_test.grid(row=0)
chkbtn_int = tk.Checkbutton(root, text="Integer", variable=i_checked, onvalue=2, offvalue=-2, command=cb_i_checked)
chkbtn_int.grid(row=1)
chkbtn_string = tk.Checkbutton(root, text="String", variable=s_checked, onvalue="on", offvalue="off", command=cb_s_checked)
chkbtn_string.grid(row=2)
root.mainloop()
".center.slide_wrapper > div:nth-child(4) > div:nth-child(2)"
如果使用Python或Ruby,请使用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"
如果Java使用.text
而C#使用.getText()
。
答案 2 :(得分:0)
以下是获取美国地址的工作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 Map。 在Java中尝试上面的代码。
以下是上述代码的输出。