我正在尝试运行以下代码,但我一直在Select元素上得到一个空指针...
以下是我使用的代码示例:
@FindBy(id="ddCompany")
WebElement Select;
public void Test(){
driver.findElement(By.id("igtxtdfUsername")).sendKeys("dimitri");
Select dropdown = new Select(Select);
dropdown.getOptions().get(1).click();
driver.findElement(By.id("igtxtdfPassword")).sendKeys("dimitri");
driver.findElement(By.id("Login")).click();
driver.quit();
我们不能使用Driver.findElement函数,因此我们必须找到一种方法来使用Find By工作。我在下拉列表后推了一个sout,但它只是给了我Null。
答案 0 :(得分:2)
You can always use xpath to locate the select element if you don't have className, id or name. you're getting an exception because the constructor for select is expecting a not null WebElement
答案 1 :(得分:1)
首先,select类具有如下构造函数:
Select(WebElement element)
所以如果你喜欢下面的话,它应该有效:
@FindBy(id="ddCompany")
private WebElement Select;
Select dropdown = new Select(Select);
dropdown.getOptions().get(1).click();
确保您的查找元素ID正确无误。
您可以查看有关Select mechanism here
的更多信息答案 2 :(得分:0)
你必须找到Element for:
Select dropdown = new Select(Select);
该选择变量未初始化,因此您将在以下行获得NullPointerException:
class XEncoder(json.JSONEncoder):
def default(self, obj):
new_object = {}
def expand_it(obj, X):
blank_dict = {}
try:
data = vars(obj)
except TypeError:
data = obj
data_keys = list(data.keys())
for k in data_keys:
if isinstance(data[k], X):
print(data[k])
blank_dict[k] = expand_it(data[k], X)
elif type(data[k]) == dict:
blank_dict[k] = expand_it(data[k], X)
else:
blank_dict[k] = data[k]
return blank_dict
new_object = expand_it(y, X)
encoded_json = json.JSONEncoder().encode(new_object)
loads_json = json.loads(encoded_json)
return loads_json
选择变量的findElement,然后只有你会得到下拉选项。否则会引发异常。
答案 3 :(得分:0)
我今天解决了这个问题,
问题是我需要使用pagefactory,因为我正在使用Webdriver页面对象,我定义了我的Webdrivers(所有3种不同的浏览器)我需要在我的函数之前放置Pagefactory现在他不返回空指针因为现在该功能可以使用正确的驱动程序而且一切正常。