基本上我试图使用周期表库创建一个小程序,我试图创建第一个返回给定元素质量的函数。
FirefoxOptions foptions = new FirefoxOptions();
foptions.setCapability("marionette", false);
WebDriver driver = new FirefoxDriver(foptions);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.navigate().to("https://us.justdial.com/NY/New-York/Afghani-Restaurants/ct-16110200");
WebElement rightclickelement = driver.findElement(By.xpath("/html/body/div[1]/div[1]/div/section/div[5]/div[2]/div[2]/ul/li[1]/div/div[2]/h2/a"));
Actions action = new Actions(driver);
action.contextClick(rightclickelement).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();
但是这不起作用,因为我试图使用变量而不是属性,所以它说:
def mass():
Element = input("Element? ")
return periodictable.Element.mass
将质量函数与元素周期表一起使用的正确方法应该是:
Traceback (most recent call last):
File "<string>", line 424, in run_nodebug
File "<module1>", line 25, in <module>
File "<module1>", line 22, in main
File "<module1>", line 15, in mass
AttributeError: module 'periodictable' has no attribute 'Element'
所以我要问的是:我可以给一个带变量的属性,还是有其他解决方案让用户选择元素?
答案 0 :(得分:3)
该模块似乎具有以下功能:
periodictable.elements.symbol(Element).mass
如果您还需要按名称访问元素等,此帮助页面可能很有用:
help(periodictable.elements)
此类事情的一般方法是使用getattr:
getattr(periodictable, Element).mass
但是这也会找到“periodictable”的其他属性,比如它定义的函数等等,所以最好避免使用这种类型的应用程序来查找程序用户输入的内容。
答案 1 :(得分:1)
您可以使用getattr
:
>>> import periodictable
>>> periodictable.Na.mass
22.98977
>>> element = 'Na'
>>> getattr(periodictable, element).mass
22.98977