SyntaxError:在Python中通过Selenium使用find_element_by_xpath时语法无效

时间:2019-02-14 07:57:46

标签: python selenium selenium-webdriver webdriver syntax-error

代码试用:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.niftyindices.com/reports/historical-data")
driver.maximize_window()
driver.find_element_by_xpath("//*[@id="ddlHistorical"]").send_keys("NIFTY 100")

我遇到错误:

File "<ipython-input-32-592f058980cd>", line 5
    driver.find_element_by_xpath("//*[@id="ddlHistorical"]").send_keys("NIFTY 100")
                                                       ^
SyntaxError: invalid syntax

2 个答案:

答案 0 :(得分:2)

此错误消息...

SyntaxError: invalid syntax

...表示 xpath 表达式不是有效的 xpath表达式

在使用双引号 "..." 作为 xpath 时,您需要提供属性值< / em>中的单引号中,即 '...'

因此您需要更改:

@id="ddlHistorical"

收件人:

@id='ddlHistorical'

有效的代码行:

driver.find_element_by_xpath("//*[@id="ddlHistorical"]").send_keys("NIFTY 100")

将是:

driver.find_element_by_xpath("//*[@id='ddlHistorical']").send_keys("NIFTY 100")

答案 1 :(得分:1)

在这种情况下,不能使用发送键从下拉框中选择值。我已经编写了相同的代码段。请尝试一下。

import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class Testing {
	public static WebDriver driver;

	@Test
	public void test() throws InterruptedException {
		System.setProperty("webdriver.chrome.driver", "./Driver/chromedriver");
		driver = new ChromeDriver();
		driver.get("http://www.niftyindices.com/reports/historical-data");
		driver.manage().window().maximize();
		driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
		driver.findElement(By.xpath("//*[@id=\"HistoricalData\"]/div[1]/div/div/a")).click();
		Thread.sleep(2000);
		List<WebElement> elements = driver.findElements(By.xpath("//*[@id=\"mCSB_2_container\"]/li"));
		for (WebElement element : elements) {
			String mCSB = element.getText();
			
			if (mCSB.equalsIgnoreCase("NIFTY 100"))
			{
				element.click();
			}
			System.out.println(mCSB);
		}
	}
}

如果可以帮助您,请投票并接受答案。