可以使用哪种方法获取网站上的硬编码文本?

时间:2016-03-14 09:39:52

标签: selenium selenium-webdriver selenium-chromedriver

我想打印如下地址:
200 E校园大道。
Suite 200,Columbus,OH - 43235
+ 1-740-972-6457

我可以用什么方法?
我使用gettext()作为屏幕截图中显示的xpath 它会抛出错误

  

'无法找到元素'


请参阅附件enter image description here

3 个答案:

答案 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中尝试上面的代码。

以下是上述代码的输出。

enter image description here 希望这会有所帮助:)